The upstream crash Makefile CONF_TARGET_ARCH mapping (used when
CROSS_COMPILE is set) enumerates most of OE supported arches
but omits 32-bit arm. Building with CROSS_COMPILE=arm-*
therefore aborts at Makefile parse time:
Makefile:75: *** The current Arch(arm) does not support cross compilation. Stop.
ARM is already a valid crash target (defs.h/configure.c), so add a patch
mapping the normalized "arm" arch to CONF_TARGET_ARCH=ARM like every
other supported arch.
Verified by cross building crash for qemuarm (arm-yoe-linux-gnueabi-):
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Cc: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
The cross-canadian variant did not build. Several issues:
1. DEPENDS used :append on top of crash.inc's target DEPENDS. cross-canadian
does not remap DEPENDS to nativesdk, so the target zlib/readline/ncurses/
gmp/mpfr stayed in the dependency set and staged a real target usr/lib into
the recipe sysroot, clashing with the nativesdk toolchain (clang-glue
provides usr/lib as a symlink) during do_prepare_recipe_sysroot. Override
DEPENDS with the nativesdk set instead (matching gdb-cross-canadian) and add
the -native build tools the build needs.
2. do_compile hardcoded ${HOST_PREFIX}gcc, which does not exist on clang based
SDKs (TOOLCHAIN = "clang"), giving "C compiler cannot create executables".
Use the toolchain-aware ${CC}/${CXX} like the other variants.
3. crash's gdb merge re-enters the top-level crash Makefile from gdb's link
rule ("make -C ../.. ... library") without passing the compiler, so crash's
own objects fell back to the Makefile default $(CROSS_COMPILE)gcc and failed
to find a compiler on clang SDKs. Forward CC/CXX through that recursion in
the bundled gdb-16.2.patch; this is harmless where ${cross}-gcc exists.
Verified by building crash, crash-native, crash-cross and
crash-cross-canadian-x86-64 for a clang based SDK (qemux86-64).
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The bundled gdb 16.2 hard-requires GMP and MPFR (crash 8.0.6 bundled gdb 10.2,
which did not). native.bbclass remaps DEPENDS to their -native variants
automatically, so crash-native builds, but cross.bbclass does not - so
crash-cross failed in gdb's configure with:
configure: error: Building GDB requires GMP 4.2+, and MPFR 3.1.0+.
List the build-host dependencies (gmp/mpfr, plus readline/ncurses that crash
links) explicitly for class-cross.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The recipe passed --with-sysroot=${STAGING_DIR_TARGET} to the bundled gdb's
configure. gdb bakes that path in as its default target sysroot, so the
resulting /usr/bin/crash binary embedded the build-time recipe-sysroot path:
File /usr/bin/crash in package crash contains reference to TMPDIR [buildpaths]
This was worked around by demoting the buildpaths QA check to a warning
(ERROR_QA:remove / WARN_QA:append), which only hides the problem - the build
path is still wrong for a binary that runs on the target (or, for the
cross-canadian variant, in the SDK).
Set --with-sysroot=/ instead. crash takes the kernel/vmlinux and dump on its
command line, so gdb's compiled-in default sysroot is irrelevant at runtime;
"/" is both a sane default and contains no build path. With this the binary
no longer references TMPDIR, so the QA suppression can be removed and the
buildpaths check passes for real.
Verified with a clean build for qemux86-64: no buildpaths QA issue and no
TMPDIR references remain in the crash binary.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The do_compile:prepend ran "git init && git add . && git commit" inside the
staged gdb-16.2 tree. crash's build does not use git at all - the bundled gdb
is unpacked from a release tarball and merged with plain "patch -p0" - so this
served no purpose and only made the build depend on a working git identity.
In any environment where committer identity is unset, or where commit signing
is enabled globally (commit.gpgsign=true), do_compile fails with:
error: gpg failed to sign the data
fatal: failed to write commit object
Drop the git scaffolding entirely; the gdb patch still applies with patch(1).
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
std::allocator::construct was removed in C++20 (GCC 16 default).
Rewrite 0006-gdbsupport-fix-default-init-alloc to include <memory>
guard the using-declaration to pre-C++17, and add a forwarding
construct() overload.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The GDB 10.2 sources still rely on std::allocator::construct, which was
removed in C++20.
This causes the build to fail with errors such as:
default-init-alloc.h:52:12: error:
'construct' has not been declared in 'class std::allocator<...>'
Explicitly build the C++ sources with GNU C++17 to retain compatibility
with the bundled GDB sources.
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Due to the way the kernel-selftest sources are set up, the toplevel
Makefile does not work and `make clean` will always result in a "The
source tree is not clean, please run 'make ARCH=... mrproper'" error.
Avoid running it by setting CLEANBROKEN = "1", so rebuilding the recipe
without a clean (which often happens when the kernel has changed) does
not fail.
Signed-off-by: Nora Schiffer <nora.schiffer@ew.tq-group.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
libcap is needed unconditionally for capability-aware tests such as
breakpoints, cgroup, clone3, futex, ptrace, and seccomp. Add it to
DEPENDS so it is always available at build time and to RDEPENDS so the
installed tests can call cap_get_proc() and friends at runtime.
bash and libgcc are also added to RDEPENDS: bash is required by several
test shell scripts, and libgcc provides libgcc_s.so needed by tests
that use GCC-emitted unwinding stubs.
Signed-off-by: Telukula Jeevan Kumar Sahu <j-sahu@ti.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade minicoredumper from 2.0.7 to 2.0.8.
Remove below patches because they have been merged by 2.0.8
upstream version:
0001-corestripper-Fix-uninitialized-warning.patch
0002-Fix-2038-year-problem-in-timestamp-handling.patch
0001-coreinject-fix-assignment-of-const-qualified-type.patch
Changelog:
===========
* Address multiple compiler warnings and errors found by more recent
toolchains. The issues existed technically, but were not a problem
for real-world usage scenarios.
* Relocate the man pages for sbin binaries to section 8.
* Fix timestamp value in the core dump directory name for 32-bit
systems with a 64-bit time_t definition after 2038-01-19.
* Improve status query for init script to check core_pattern usage and
handle when the regd daemon is not enabled.
* Known problems:
- If tar is active, core files larger than 8GB will be
truncated. If it is known that the core files will be >8GB and
the full core file is needed, tar must be disabled.
License-Update:
The COPYING changes in upstream commit 941079541a
update Copyright end dates to reflect when changes were last committed.
The COPYING.LGPLv2.1 change in upstream commit 00e3b2fdf7 replaces
the FSF postal mailing address with a URL as recommended by the GNU FAQ.
No license change, no impact on the recipe licensing.
Signed-off-by: Li Zhou <li.zhou@windriver.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Backport a patch from kernel to fix the following build errors.
bbpf.c: In function ‘kallsyms_cb’:
| libbpf.c:8192:13: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 8192 | res = strstr(sym_name, ".llvm.");
| | ^
| libbpf.c: In function ‘avail_kallsyms_cb’:
| libbpf.c:11497:31: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 11497 | if (!(sym_sfx = strstr(sym_name, ".llvm.")))
| | ^
| libbpf.c: In function ‘resolve_full_path’:
| libbpf.c:12085:35: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
| 12085 | next_path = strchr(s, ':');
| |
Signed-off-by: He Zhe <zhe.he@windriver.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Some headers come from 'mm' (in the top source directory, i.e. the root of
Linux's sources), as in the exampels below:
Makefile:LOCAL_HDRS += $(selfdir)/mm/local_config.h $(top_srcdir)/mm/gup_test.h
cow.c:#include "../../../../mm/gup_test.h"
gup_longterm.c:#include "../../../../mm/gup_test.h"
gup_test.c:#include <mm/gup_test.h>
hmm-tests.c:#include <mm/gup_test.h>
uffd-unit-tests.c:#include "../../../../mm/gup_test.h"
Add this directory to KERNEL_SELFTEST_SRC if 'mm' PACKAGECONFIG is enabled.
Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add numa (numactl), as required by rmap, migration, and others.
Add liburing, otherwise some tests would be disabled.
Moreover, liburing's availability is checked in a shell script executed
prior to the compilation of the individual test cases. This script,
however, does not read CFLAGS.
Backport a fix [1] from mainline to address this issue.
[1] https://github.com/torvalds/linux/commit/7f532d19c8be76ad2fcd7ab6b0c9eb618f70966b
Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The support of libhugetlbfs was removed from mainline Linux a while ago,
since v6.1 [1].
Since libhugetlbfs was the main reason to remove 'mm' selftests for some
specific architectures, the respective operations should only remove bpf.
Update the recipe to remove libhugetlbfs as a dependency of mm, and thus
unblock this test category for some targets.
[1] https://github.com/torvalds/linux/commit/6f83d6c74ea5a5b267be85206822da280cae110a
Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
User space-side features
* bpf_map__set_exclusive_program() and bpf_map__exclusive_program() APIs for exclusive map creation;
* bpf_program__assoc_struct_ops() and bpf_prog_assoc_struct_ops() APIs to associate a non-struct_ops BPF program with a struct_ops map;
* btf__permute() API to rearrange BTF types in-place according to a provided mapping;
* BTF type lookup optimization: binary search for btf__find_by_name() and btf__find_by_name_kind();
* btf__add_btf() now accepts split BTF sources;
* fsession support (SEC("fsession+") / SEC("fsession.s+"));
* BPF_F_CPU and BPF_F_ALL_CPUS flags support for per-CPU map operations;
* arena globals are moved to the end of the arena mmap region if kernel supports it;
* support for LLVM-generated indirect jump tables (BPF ISA v4) via .jumptables ELF section and BPF_MAP_TYPE_INSN_ARRAY maps;
* avoid expensive kallsyms parsing when kprobe.session target is an exact function match;
* new dont_enable option in struct bpf_perf_event_opts to suppress perf event auto-enablement;
BPF-side features
* USDT SIB (Scale-Index-Base) addressing support;
* dynptr helper signatures (bpf_dynptr_from_mem, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data) widened from 32-bit to 64-bit size/offset parameters;
Bug fixes
* As usual, a number of bug fixes included, see full commit log for details.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Current builds were extracting the relevance from LDFLAGS, which is
not the right thing to do. cflags carry the right elements to ensure
reproducibility with OE, so ensure its respected by makefile
Fixes
WARNING: agent-proxy-1.97-r0 do_package_qa: QA Issue: File /usr/bin/.debug/agent-proxy in package agent-proxy-dbg contains reference to TMPDIR [buildpaths]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
rtla source code is present in the kernel source tree at tools/tracing/rtla.
There is another build option for rtla to enable bpf bindings, this was
not a quick one to get working and left as a future improvement.
Makefile for rtla has evolved in newer kernels (v6.9). Some fixes needed for
support with older kernels. This commit was tested against 6.18 and 6.8.
Also add rtla to packagegroup-meta-oe-benchmarks.
Signed-off-by: Peter Bergin <peter@berginkonsult.se>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
When having a DEPENDS against cpupower it need to leave its header files.
Remove that cleanup that has been present since the beginning of the recipe
without any (to me) known reason.
cpupower ship a systemd service and config file in kernel source tree
since kernel 6.16. Package them as a separate package cpupower-systemd to
be installed if wanted.
Add cpupower to packagegroup-meta-oe to be included in builds of all
packages.
Signed-off-by: Peter Bergin <peter@berginkonsult.se>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
tmon is a monitoring and testing tool for Linux kernel thermal
subsystem, it help visualize, tune, and test this complex system.
Signed-off-by: Liwei Song <liwei.song@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
The minicoredumper has multiple 2038 year problems where 'long' type
variables and strtol() function calls cause overflow on 32-bit systems
when handling timestamps after 2038-01-19.
This leads to incorrect timestamp formatting in core dump directory
names (e.g., sleep40s.20380119.031407+0000.598).
Fix by changing 'long timestamp' to 'time_t timestamp' and replacing
strtol() with strtoll() to properly handle 64-bit timestamps on
32-bit systems.
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Most host gcc doesn't support -fcanon-prefix-map right now, so
empty DEBUG_PREFIX_MAP_EXTRA to fix the below build error.
| gcc: error: unrecognized command-line option ‘-fcanon-prefix-map’; did you mean ‘-fmacro-prefix-map=’?
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Fix the following error when using buildtools-extended:
va_server.c:20:10: fatal error: zlib.h: No such file or directory
20 | #include <zlib.h>
| ^~~~~~~~
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
[snip of Makefile]
# bison will create both sqlhist.tab.c and sqlhist.tab.h
sqlhist.tab.h:
sqlhist.tab.c: sqlhist.y sqlhist.tab.h
bison --debug -v --report-file=bison.report -d -o $@ $<
[snip]
sources of libtracefs is fetched by git, the mtime of sqlhist.y,
sqlhist.tab.c is random. so sometimes, sqlhist.tab.c is regenerated,
sometimes, sqlhist.tab.c in original sources in used. bison used to
gernerate sqlhist.tab.c by upstream libtracefs maybe has different
version with the build host one. This make the final libtracefs.so not
reproducible. This fix touch sqlhist.tab.c to make it has the newest
mtime, and sqlhist.tab.c is not regenerated during build.
Signed-off-by: Changqing Li <changqing.li@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
build uses prepared sourcedir for kernel and relying
on target kernel recipe to prepare this is not the correct
thing for native package. Since the kernel will need target
dependencies cross-compiler etc. to build/prepare the kernel sourcedir
This issue is revealed when bpftool-native is built for riscv64
it ends up in build errors
ERROR: bpftool-native-1.0-r0 do_configure: The sstate manifest for task 'linux-libc-headers:populate_sysroot' (multilib variant '') could not be found.
The pkgarchs considered were: qemuriscv64, allarch, x86_64_x86_64-nativesdk.
But none of these manifests exists:
/mnt/b/yoe/master/sources/poky/build/tmp/sstate-control/manifest-qemuriscv64-linux-libc-headers.populate_sysroot
/mnt/b/yoe/master/sources/poky/build/tmp/sstate-control/manifest-allarch-linux-libc-headers.populate_sysroot
/mnt/b/yoe/master/sources/poky/build/tmp/sstate-control/manifest-x86_64_x86_64-nativesdk-linux-libc-headers.populate_sysroot
ERROR: Logfile of failure stored in: /mnt/b/yoe/master/sources/poky/build/tmp/work/x86_64-linux/bpftool-native/1.0/temp/log.do_configure.2509356
Therefore separate it out into independent recipe and use latest stable
kernel to build it.
Enable musl builds as well for bpftool, it works now.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Some toolchains ship only bits/*.h without the -64.h suffix,
causing the recipe to fail. Add a fallback to use *.h if
*-64.h is not found, and warn if neither exists.
Signed-off-by: Nylon Chen <nylon.chen@sifive.com>
Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Location of S have moved under UNPACKDIR and this
needs to reflect in ptest install structure as some
of tests access the sourcedirs relative to itself
during run, these locations are built into tests
Signed-off-by: Khem Raj <raj.khem@gmail.com>
0002-tlshd-configure.ac-Use-AC_CHECK_HEADER-instead-of-AC.patch
removed since it's included in 1.2.1
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
The PTP selftest fails to compile with kernel versions 6.7+ due to
missing header definitions for PTP_MASK_CLEAR_ALL and PTP_MASK_EN_SINGLE.
These definitions were introduced in kernel v6.7 with commit c5a445b.
This fix adds kernel headers to CFLAGS during compilation to ensure
the required definitions are available.
Error before fix:
testptp.c:613:31: error: 'PTP_MASK_CLEAR_ALL' undeclared
testptp.c:615:38: error: 'PTP_MASK_EN_SINGLE' undeclared
Fixes: #878
Signed-off-by: Jacob Panov <jacobpanov@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>