On Sat, May 18, 2024 at 10:48 PM Alejandro Hernandez Samaniego via
lists.openembedded.org <[email protected]>
wrote:
>
> It was previously discovered that mcmodel=medany should be used for RISCV64,
> however this was only being set for the applications themselves, but not for
> newlib, this meant that we ended up with C library that used a code model and
> an application that used another one which is not something we want.
>
> Pass mcmodel=medany when building newlib for RISCV64 as well.
>
> Also, s/CFLAGS/TARGET_CFLAGS to standarize across recipes, the variable
> expansion provides no functional difference at this point.
>
> Signed-off-by: Alejandro Enedino Hernandez Samaniego <[email protected]>
> ---
> meta/classes-recipe/baremetal-image.bbclass | 2 +-
> meta/recipes-core/newlib/newlib.inc | 8 ++++++++
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes-recipe/baremetal-image.bbclass
> b/meta/classes-recipe/baremetal-image.bbclass
> index b9a584351a..4e7d413626 100644
> --- a/meta/classes-recipe/baremetal-image.bbclass
> +++ b/meta/classes-recipe/baremetal-image.bbclass
> @@ -103,7 +103,7 @@ QB_OPT_APPEND:append:qemuriscv32 = " -bios none"
> # since medlow can only access addresses below 0x80000000 and RAM
> # starts at 0x80000000 on RISC-V 64
> # Keep RISC-V 32 using -mcmodel=medlow (symbols lie between -2GB:2GB)
> -CFLAGS:append:qemuriscv64 = " -mcmodel=medany"
> +TARGET_CFLAGS:append:qemuriscv64 = " -mcmodel=medany"
>
>
> ## Emulate image.bbclass
> diff --git a/meta/recipes-core/newlib/newlib.inc
> b/meta/recipes-core/newlib/newlib.inc
> index 6113f5e831..34b0f3f747 100644
> --- a/meta/recipes-core/newlib/newlib.inc
> +++ b/meta/recipes-core/newlib/newlib.inc
> @@ -28,6 +28,14 @@ B = "${WORKDIR}/build"
> ## disable stdlib
> TARGET_CC_ARCH:append = " -nostdlib"
>
> +# Both the C library and the application should share the same mcmodel.
> +# Use the medium-any code model for the RISC-V 64 bit implementation,
> +# since medlow can only access addresses below 0x80000000 and RAM
> +# starts at 0x80000000 on RISC-V 64
> +# Keep RISC-V 32 using -mcmodel=medlow (symbols lie between -2GB:2GB)
> +TARGET_CFLAGS:append:qemuriscv64 = " -mcmodel=medany"
> +
> +
medany can be slow, and medlow is default on RISCV so I wonder if the
ram address
you are mentioning is so on all RV64 baremetal apps using newlib or is
it specific to
the hardware you are testing.
> EXTRA_OECONF = " \
> --build=${BUILD_SYS} \
> --target=${TARGET_SYS} \
> --
> 2.45.1
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#199548):
https://lists.openembedded.org/g/openembedded-core/message/199548
Mute This Topic: https://lists.openembedded.org/mt/106182788/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-