X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=scripts%2Flttng-modules%2Fparam-build.sh;h=1535b3e5485ba9d4b68d8f6bcece1217e1b3c1f6;hb=ae365617b4663de79c0ee208fa20ebe5c6cf9dca;hp=5d12ca50c5cb45d80322783e6749cbffee479368;hpb=c05bf06f03cb27a2fd02a4e89330f7d6309ec357;p=lttng-ci.git diff --git a/scripts/lttng-modules/param-build.sh b/scripts/lttng-modules/param-build.sh index 5d12ca5..1535b3e 100644 --- a/scripts/lttng-modules/param-build.sh +++ b/scripts/lttng-modules/param-build.sh @@ -143,7 +143,13 @@ select_compiler() { # Enter linux source dir cd "$LINUX_SRCOBJ_DIR" - kversion=$(make -s kernelversion) + # Get the kernel version using the host toolchain, some cross-compiled arch may be broken + kversion=$(unset ARCH; unset CROSS_COMPILE; make -s kernelversion) + + if [ "${cross_arch}" = "riscv64" ] && verlt "${kversion}" "5.12"; then + echo "RISC-V support was upstreamed in kernel v4.19 but kprobes support was only added in v5.12. Don't try to build it." + exit 0 + fi if { verlt "$kversion" "4.4"; }; then # Force gcc-4.8 for kernels before 4.4 @@ -288,11 +294,14 @@ build_linux_kernel() { # Generate kernel configuration case "$ktag" in Ubuntu*) - if [ "${cross_arch}" = "powerpc" ]; then - if vergte "${kversion}" "4.10"; then - echo "Ubuntu removed big endian powerpc configuration from kernel >= 4.10. Don't try to build it." - exit 0 - fi + if [ "${cross_arch}" = "powerpc" ] && vergte "${kversion}" "4.10"; then + echo "Ubuntu removed big endian powerpc configuration from kernel >= 4.10. Don't try to build it." + exit 0 + fi + + if [ "${cross_arch}" = "riscv64" ] && verlt "${kversion}" "6.2"; then + echo "Ubuntu added RISC-V config to their 'regular' kernels in v6.2. Don't try to build it." + exit 0 fi fakeroot debian/rules clean KW_DEFCONFIG_DIR=. @@ -770,6 +779,12 @@ extract_distro_headers() { fi fi + # On riscv with 5.14 the vsdo objects are required + if [ "${karch}" = "riscv" ] && \ + ( { vergte "${kversion}" "5.14"; } && { verlt "${kversion}" "5.15"; } ); then + cp -a --parents arch/riscv/kernel/vdso/*.o "${LINUX_HDROBJ_DIR}/" + fi + # Newer kernels need objtool to build modules when CONFIG_STACK_VALIDATION=y if [ -f tools/objtool/objtool ]; then cp -a --parents tools/objtool/objtool "${LINUX_HDROBJ_DIR}/" @@ -959,6 +974,13 @@ if [ "x${cross_arch}" != "x" ]; then ubuntu_config="ppc64el-config.flavour.generic" ;; + "riscv64") + karch="riscv" + cross_compile="riscv64-linux-gnu-" + vanilla_config="defconfig" + ubuntu_config="riscv64-config.flavour.generic" + ;; + *) echo "Unsupported cross arch $cross_arch" exit 1 @@ -1009,6 +1031,12 @@ elif [ "x${arch}" != "x" ]; then ubuntu_config="ppc64el-config.flavour.generic" ;; + "riscv64") + karch="riscv" + vanilla_config="allmodconfig" + ubuntu_config="riscv64-config.flavour.generic" + ;; + *) echo "Unsupported arch $arch" exit 1