jjb: lttng-modules: Add riscv64 to crossbuilds
authorMichael Jeanson <mjeanson@efficios.com>
Thu, 5 Oct 2023 20:29:07 +0000 (16:29 -0400)
committerMichael Jeanson <mjeanson@efficios.com>
Thu, 5 Oct 2023 20:31:58 +0000 (16:31 -0400)
Change-Id: I979165f270138f0daae63589a84b784bfa8b71fb
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
jobs/lttng-modules.yaml
scripts/lttng-modules/param-build.sh

index e2cde13fecc7793b47c8d23820df8fc02f4f7009..c8ee4982d9f9d50024079d9ad582186181af6540 100644 (file)
           platforms: !!python/tuple [deb12-amd64]
       - 'lttng-modules_PARAM_crossbuild':
           platforms: !!python/tuple [deb12-amd64]
-          cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el]
+          cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el, riscv64]
 
 # Misc jobs
       - 'lttng-modules_ALL_trigger-vanilla'
index 67ed460ba934ba8890e14724cfb376b02ef02ef5..1535b3e5485ba9d4b68d8f6bcece1217e1b3c1f6 100644 (file)
@@ -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
@@ -773,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}/"
@@ -962,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
@@ -1012,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
This page took 0.024885 seconds and 4 git commands to generate.