On Mon, Dec 2, 2024 at 3:14 PM Randy MacLeod via
lists.openembedded.org
<randy.macleod=windriver....@lists.openembedded.org> wrote:
>
> On 2024-12-01 11:35 p.m., deepthi.hem...@windriver.com wrote:
>
> From: Deepthi Hemraj <deepthi.hem...@windriver.com>
>
> RISC-V offers several virtual memory address schemes (Sv39, Sv48, and Sv57),
> but ASan currently supports only Sv39 on RISC-V64.
> For RISC-V64 Sv39, ASan uses custom allocator configurations
> tuned to manage large allocations efficiently.
> These tunings are incompatible with larger address spaces like
> Sv48/Sv57 due to differences in region sizes and alignment.
>
> For riscv64, Asan's tuning for Sv39 can be enabled in qemu
> by using the appropriate flag in the command line as shown below:
> runqemu nographic qemuparams="-cpu rv64,sv39=true"
>
> Additionally, the COMPATIBLE_HOST list in gcc-sanitizers has been
> updated to include riscv64. All necessary tests were successfully
> conducted on both hardware(Microchip PolarFire SoC)
> and the qemurisv64 environment, with ASan effectively
> detecting memory errors in both scenarios.
>
>
> Hi Deepthi,
>
>
> Nice! Thanks for confirming that the qemu command line option allows 
> gcc-sanitizers to
>
> work without any code changes.
>
>
> One concern is testing: testers would have know that this flag was needed for 
> gcc-sanitizers.
>
> You could add a comment or documentation note as a hint but that doesn't 
> automate and is error prone for people.
>
> I did note that "spacemonkeydelivers" (!) maintains that :
>
> "Indeed ASAN was ported to RISC-V when Sv39 was the default addressing mode, 
> and changes to run it in Sv48/Sv57 must be made.
> The issue is related to the way how the address space is split between stack, 
> heap and shadow versions of them."
> https://github.com/google/sanitizers/issues/1707#issuecomment-1852404560

its ok to use Sv39, other modes are not as common yet.

>
> so I don't think we've gotten to the best possible general purpose fix but 
> rather a (helpful) work-around.
>
> I don't think we should merge this since there's more work to do for a proper 
> fix.
>
> ../Randy
>
>
>
>
> Signed-off-by: Deepthi Hemraj <deepthi.hem...@windriver.com>
> ---
>  meta/recipes-devtools/gcc/gcc-sanitizers.inc | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers.inc 
> b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
> index 524ebd4ba4..8c98e9cf8a 100644
> --- a/meta/recipes-devtools/gcc/gcc-sanitizers.inc
> +++ b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
> @@ -73,13 +73,14 @@ RRECOMMENDS:${PN}:append:x86 = " liblsan"
>  RRECOMMENDS:${PN}:append:x86-64 = " liblsan libtsan"
>  RRECOMMENDS:${PN}:append:powerpc64 = " liblsan libtsan"
>  RRECOMMENDS:${PN}:append:aarch64 = " liblsan libtsan"
> +RRECOMMENDS:${PN}:append:riscv64 = " liblsan libtsan"
>
>  do_package_write_ipk[depends] += 
> "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs:do_packagedata"
>  do_package_write_deb[depends] += 
> "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs:do_packagedata"
>  do_package_write_rpm[depends] += 
> "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs:do_packagedata"
>
>  # Only x86, powerpc, sparc, s390, arm, aarch64 and loongarch64 are supported
> -COMPATIBLE_HOST = 
> '(x86_64|i.86|powerpc|sparc|s390|arm|aarch64|loongarch64).*-linux'
> +COMPATIBLE_HOST = 
> '(x86_64|i.86|powerpc|sparc|s390|arm|aarch64|loongarch64|riscv64).*-linux'
>  # musl is currently broken entirely
>  COMPATIBLE_HOST:libc-musl = 'null'
>
>
>
> --
> # Randy MacLeod
> # Wind River Linux
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#208166): 
https://lists.openembedded.org/g/openembedded-core/message/208166
Mute This Topic: https://lists.openembedded.org/mt/109874858/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to