TF-RMM/tf-rmm

RMM tag rmm-spec-v1.0-eac2 fails to build with AArch64 GNU/Linux target toolchain

Closed this issue · 0 comments

The latest RMM codebase (commit hash of the HEAD mentioned below) fails to build with the AArch64 GNU/Linux target (aarch64-none-linux-gnu) toolchain. The same HEAD builds fine with AArch64 bare-metal target (aarch64-none-elf) toolchain.

commit 9b161a82d5a46e6a981e0ffa857b3784638ab57e (tag: rmm-spec-v1.0-eac2, upstream/main, upstream/integration)
Merge: 57e1870 0bc859b
Author: Soby Mathew <soby.mathew@arm.com>
Date:   Thu Sep 14 12:56:25 2023 +0100

    RMM specification v1.0 EAC2 aligned

The failure is seen during linking phase when certain symbol references aren't resolved. Complete log of the failing case is attached in the log file. rmm_build_failure.log.
The linker error snippet is pasted below:

[ 98%] Linking C executable rmm-runtime
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: warning: libc.so.6, needed by /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so, not found (try using -rpath or -rpath-link)
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: warning: rmm-runtime has a LOAD segment with RWX permissions
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `__strtold_nan@GLIBC_PRIVATE'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `stderr@GLIBC_2.17'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `qsort@GLIBC_2.17'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `__strtof_nan@GLIBC_PRIVATE'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `fwrite@GLIBC_2.17'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `errno@GLIBC_PRIVATE'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `fputs@GLIBC_2.17'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `__strtod_nan@GLIBC_PRIVATE'
/****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/12.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /****/workspace/tools/gcc/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu/bin/../aarch64-none-linux-gnu/libc/usr/lib/../lib64/libm.so: undefined reference to `__assert_fail@GLIBC_2.17'
collect2: error: ld returned 1 exit status
make[2]: *** [runtime/CMakeFiles/rmm-runtime.dir/build.make:551: runtime/rmm-runtime] Error 1
make[1]: *** [CMakeFiles/Makefile2:1362: runtime/CMakeFiles/rmm-runtime.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

The v0.3.0 tag for RMM however builds fine for both toolchains.