From 1f255ac25207547e39c4e6542bef53d45777544e Mon Sep 17 00:00:00 2001 From: simpal01 Date: Mon, 25 Nov 2024 16:12:42 +0000 Subject: [PATCH] Make fvp work for anything other than aarch64 when being set as the test machine (#574) The current picolibc changes can't handle fvp being set as the test machine for anything other than aarch64. If fvp isn't set, it defaults to qemu, which works for now because the ARM fvp doesn't require anything special. However, when adding new aarch64 big-endian variants, one of the picolibc patches includes test-machine as an option in the Meson build scripts. Consequently, the library's CMake needs to set this option using -Dtest-machine=${TEST_EXECUTOR}. This means that for the armv8.1m library variant,we are explicitly passing the FPU, which can cause the error fvp: requested test machine not found since fvps are only defined for the aarch64 case. --- arm-runtimes/CMakeLists.txt | 1 + .../0002-Add-bootcode-for-AArch64-FVPs.patch | 27 ++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/arm-runtimes/CMakeLists.txt b/arm-runtimes/CMakeLists.txt index 3208fd1..6493ef5 100644 --- a/arm-runtimes/CMakeLists.txt +++ b/arm-runtimes/CMakeLists.txt @@ -390,6 +390,7 @@ if(C_LIBRARY STREQUAL picolibc) -Dmultilib=false -Dtests-enable-stack-protector=false -Dtest-long-double=${enable_picolibc_long_double_test} + -Dtest-machine=${TEST_EXECUTOR} -Dnewlib-nano-malloc=${newlib_nano_malloc} -Dtests=false --prefix diff --git a/patches/picolibc/0002-Add-bootcode-for-AArch64-FVPs.patch b/patches/picolibc/0002-Add-bootcode-for-AArch64-FVPs.patch index cde586a..f94b977 100644 --- a/patches/picolibc/0002-Add-bootcode-for-AArch64-FVPs.patch +++ b/patches/picolibc/0002-Add-bootcode-for-AArch64-FVPs.patch @@ -1,6 +1,6 @@ -From f2ca20cebc85850a50b80424bb0f81c927edd04b Mon Sep 17 00:00:00 2001 +From 3b0b62ce6d81211a71eebe63b4b4ef0732da93ef Mon Sep 17 00:00:00 2001 From: Simi Pallipurath -Date: Thu, 14 Nov 2024 10:12:33 +0000 +Date: Mon, 25 Nov 2024 11:13:50 +0000 Subject: [PATCH 2/2] [PATCH 2/2] Add bootcode for AArch64 FVPs The AArch64 FVP (Fixed Virtual Platform) models differ from QEMU in a @@ -18,12 +18,13 @@ few ways which affect the crt0 code: picocrt/machine/aarch64/crt0.S | 200 +++++++++++++++++++ picocrt/machine/aarch64/crt0.c | 198 +++---------------- picocrt/machine/aarch64/meson.build | 9 +- + picocrt/machine/arm/meson.build | 7 + picocrt/meson.build | 296 ++++++++++++++++------------ - 6 files changed, 404 insertions(+), 303 deletions(-) + 7 files changed, 411 insertions(+), 303 deletions(-) create mode 100644 picocrt/machine/aarch64/crt0.S diff --git a/meson.build b/meson.build -index 4161d6574..9d3f5c672 100644 +index 012d664bd..b8f43c800 100644 --- a/meson.build +++ b/meson.build @@ -151,6 +151,7 @@ multilib_exclude = get_option('multilib-exclude') @@ -534,6 +535,21 @@ index 808d691a5..923d32c3b 100644 + 'suffix': '-fvp', + }, +] +diff --git a/picocrt/machine/arm/meson.build b/picocrt/machine/arm/meson.build +index 808d691a5..ecc9a485b 100644 +--- a/picocrt/machine/arm/meson.build ++++ b/picocrt/machine/arm/meson.build +@@ -33,3 +33,10 @@ + # OF THE POSSIBILITY OF SUCH DAMAGE. + # + src_picocrt += files('crt0.c') ++ ++picocrt_machines += [ ++ { ++ 'name': 'fvp', ++ 'suffix': '-fvp', ++ }, ++] diff --git a/picocrt/meson.build b/picocrt/meson.build index 76965990f..be8f875be 100644 --- a/picocrt/meson.build @@ -868,3 +884,6 @@ index 76965990f..be8f875be 100644 + endforeach endforeach +-- +2.34.1 +