On Tue, 9 Apr 2019 at 11:53, David Abdurachmanov
<david.abdurachma...@gmail.com> wrote:
>
> This patch has been in Fedora/RISCV for the last couple of months.
> I have tested simple applications (e.g. word count example), which
> worked without a problem.
>
> I believe Iain Buclaw did run GCC testsuite using Fedora/RISCV
> build and QEMU. The patch has not changed since that.
>

I've got a change in method to the way the unittests are ran, I'll
re-run with that and check the results.

> @@ -671,7 +674,16 @@ version (Shared)
>              if (dyn.d_tag == DT_STRTAB)
>              {
>                  version (linux)
> -                    strtab = cast(const(char)*)dyn.d_un.d_ptr;
> +                {
> +                    // This might change in future glibc releases (after 
> 2.29) as dynamic sections
> +                    // are not required to be read-only on RISC-V. This was 
> copy & pasted from MIPS while
> +                    // upstreaming RISC-V support. Otherwise MIPS is the 
> only arch which sets in glibc:
> +                    // #define DL_RO_DYN_SECTION 1
> +                    version (RISCV_Any)
> +                        strtab = cast(const(char)*)(info.dlpi_addr + 
> dyn.d_un.d_ptr); // relocate

I guess we'll pre-emptively need to add MIPS_Any here as well.

> diff --git 
> a/libphobos/src/std/experimental/allocator/building_blocks/region.d 
> b/libphobos/src/std/experimental/allocator/building_blocks/region.d
> index dfcecce72bd..cafe059a61f 100644
> --- a/libphobos/src/std/experimental/allocator/building_blocks/region.d
> +++ b/libphobos/src/std/experimental/allocator/building_blocks/region.d
> @@ -391,7 +391,8 @@ struct InSituRegion(size_t size, size_t minAlign = 
> platformAlignment)
>      else version (PPC) enum growDownwards = Yes.growDownwards;
>      else version (PPC64) enum growDownwards = Yes.growDownwards;
>      else version (MIPS32) enum growDownwards = Yes.growDownwards;
> -    else version (MIPS64) enum growDownwards = Yes.growDownwards;
> +    else version (RISCV32) enum growDownwards = Yes.growDownwards;
> +    else version (RISCV64) enum growDownwards = Yes.growDownwards;
>      else version (SPARC) enum growDownwards = Yes.growDownwards;
>      else version (SystemZ) enum growDownwards = Yes.growDownwards;
>      else static assert(0, "Dunno how the stack grows on this architecture.");
> diff --git a/libphobos/src/std/math.d b/libphobos/src/std/math.d
> index e98e746a856..9fe746501a4 100644
> --- a/libphobos/src/std/math.d
> +++ b/libphobos/src/std/math.d
> @@ -162,6 +162,8 @@ version (AArch64)   version = ARM_Any;
>  version (ARM)       version = ARM_Any;
>  version (SPARC)     version = SPARC_Any;
>  version (SPARC64)   version = SPARC_Any;
> +version (RISCV32)   version = RISCV_Any;
> +version (RISCV64)   version = RISCV_Any;
>

Any objection if I upstream the non-asm bits?

-- 
Iain

Reply via email to