public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/2] RISC-V: Add ratified 'E' base ISA support with draft ABIs
@ 2023-07-25  2:26 Tsukasa OI
  2023-07-25  2:26 ` [PATCH 1/2] RISC-V: Remove RV64E conflict Tsukasa OI
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-07-25  2:26 UTC (permalink / raw)
  To: Tsukasa OI, Nelson Chu, Kito Cheng, Palmer Dabbelt; +Cc: binutils

Hi,

This patch set reflects the most of ratified 'E' base ISAs and
draft/pre-draft RVE ABIs, ILP32E and LP64E.

RV32E / RV64E (ratified): The latest RISC-V ISA Manual
<https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-1239329-2023-05-23>
ILP32E (draft): RISCV ABIs Specification version 1.0
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/releases/tag/v1.0>
LP64E (pre-draft): Submission to add RVE API corresponding RV64E
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/299>

Adding pre-draft LP64E would be a problem on GCC but I bet not on Binutils
(ELF flags [to handle on Binutils/GAS] are not very detailed).

Note that this patch set does not reflect the version number of the 'E' base
ISA (ratified version 2.0) because the latest ratified specification,
"20191213", comes with the draft version 1.9 and adding the version 2.0 with
ISA_SPEC_CLASS_DRAFT does not work (due to the default value of
`DEFAULT_RISCV_ISA_SPEC'; note that it cannot be set to "draft").

I think the next unprivileged ISA specification release is the best timing
to add 'E' version 2.0 (along with new ISA_SPEC_CLASS_20??????).

Thanks,
Tsukasa




Tsukasa OI (2):
  RISC-V: Remove RV64E conflict
  RISC-V: Add "lp64e" ABI support

 bfd/elfxx-riscv.c                               | 7 -------
 gas/config/tc-riscv.c                           | 4 +++-
 gas/doc/c-riscv.texi                            | 5 ++---
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l | 2 +-
 gas/testsuite/gas/riscv/march-fail-base-02.d    | 3 ---
 gas/testsuite/gas/riscv/march-fail-base-02.l    | 2 --
 8 files changed, 8 insertions(+), 19 deletions(-)
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.d
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.l


base-commit: 3dfee72010248aca5932a27b4c34d3b79ab9f057
-- 
2.41.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/2] RISC-V: Remove RV64E conflict
  2023-07-25  2:26 [PATCH 0/2] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
@ 2023-07-25  2:26 ` Tsukasa OI
  2023-07-25 13:27   ` Kito Cheng
  2023-07-25  2:26 ` [PATCH 2/2] RISC-V: Add "lp64e" ABI support Tsukasa OI
  2023-08-31  3:21 ` [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2 siblings, 1 reply; 16+ messages in thread
From: Tsukasa OI @ 2023-07-25  2:26 UTC (permalink / raw)
  To: Tsukasa OI, Nelson Chu, Kito Cheng, Palmer Dabbelt; +Cc: binutils

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E *and* RV64E are ratified, RV64E is no longer invalid.

This commit removes a restriction that prevents making base ISA with
reduced GPRs with XLEN > 32.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_parse_check_conflicts): Remove RV64E
	conflict since the ratified 'E' base ISAs include RV64E.

gas/ChangeLog:

	* testsuite/gas/riscv/march-fail-base-02.d: Removed.
	* testsuite/gas/riscv/march-fail-base-02.l: Removed.
---
 bfd/elfxx-riscv.c                            | 7 -------
 gas/testsuite/gas/riscv/march-fail-base-02.d | 3 ---
 gas/testsuite/gas/riscv/march-fail-base-02.l | 2 --
 3 files changed, 12 deletions(-)
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.d
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.l

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index b43d2cfa0fab..205dd0766abe 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1933,13 +1933,6 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps)
   int xlen = *rps->xlen;
   bool no_conflict = true;
 
-  if (riscv_lookup_subset (rps->subset_list, "e", &subset)
-      && xlen > 32)
-    {
-      rps->error_handler
-	(_("rv%d does not support the `e' extension"), xlen);
-      no_conflict = false;
-    }
   if (riscv_lookup_subset (rps->subset_list, "q", &subset)
       && (subset->major_version < 2 || (subset->major_version == 2
 					&& subset->minor_version < 2))
diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.d b/gas/testsuite/gas/riscv/march-fail-base-02.d
deleted file mode 100644
index cfe085ab21aa..000000000000
--- a/gas/testsuite/gas/riscv/march-fail-base-02.d
+++ /dev/null
@@ -1,3 +0,0 @@
-#as: -march=rv64e
-#source: empty.s
-#error_output: march-fail-base-02.l
diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.l b/gas/testsuite/gas/riscv/march-fail-base-02.l
deleted file mode 100644
index 52fee96af368..000000000000
--- a/gas/testsuite/gas/riscv/march-fail-base-02.l
+++ /dev/null
@@ -1,2 +0,0 @@
-.*Assembler messages:
-.*Error: rv64 does not support the `e' extension
-- 
2.41.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/2] RISC-V: Add "lp64e" ABI support
  2023-07-25  2:26 [PATCH 0/2] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2023-07-25  2:26 ` [PATCH 1/2] RISC-V: Remove RV64E conflict Tsukasa OI
@ 2023-07-25  2:26 ` Tsukasa OI
  2023-07-25 13:27   ` Kito Cheng
  2023-08-31  3:21 ` [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2 siblings, 1 reply; 16+ messages in thread
From: Tsukasa OI @ 2023-07-25  2:26 UTC (permalink / raw)
  To: Tsukasa OI, Nelson Chu, Kito Cheng, Palmer Dabbelt; +Cc: binutils

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E and RV64E are now ratified, this commit prepares the ABI
support for LP64E (LP64 with reduced GPRs).

gas/ChangeLog:

	* config/tc-riscv.c (riscv_set_abi_by_arch): Update the error
	message.  (md_parse_option): Accept "lp64e".
	* doc/c-riscv.texi: Update the documentation to allow "lp64e".
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l:
	Change error message.
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l: Likewise.
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l: Likewise.
---
 gas/config/tc-riscv.c                           | 4 +++-
 gas/doc/c-riscv.texi                            | 5 ++---
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l | 2 +-
 5 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 80c14a3cd221..963f9967638f 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -384,7 +384,7 @@ riscv_set_abi_by_arch (void)
 	as_bad ("%d-bit ABI not yet supported on %d-bit ISA", abi_xlen, xlen);
 
       if (riscv_subset_supports (&riscv_rps_as, "e") && !rve_abi)
-	as_bad ("only the ilp32e ABI is supported for e extension");
+	as_bad ("only ilp32e/lp64e ABI are supported for e extension");
 
       if (float_abi == FLOAT_ABI_SINGLE
 	  && !riscv_subset_supports (&riscv_rps_as, "f"))
@@ -3897,6 +3897,8 @@ md_parse_option (int c, const char *arg)
 	riscv_set_abi (32, FLOAT_ABI_QUAD, false);
       else if (strcmp (arg, "lp64") == 0)
 	riscv_set_abi (64, FLOAT_ABI_SOFT, false);
+      else if (strcmp (arg, "lp64e") == 0)
+	riscv_set_abi (64, FLOAT_ABI_SOFT, true);
       else if (strcmp (arg, "lp64f") == 0)
 	riscv_set_abi (64, FLOAT_ABI_SINGLE, false);
       else if (strcmp (arg, "lp64d") == 0)
diff --git a/gas/doc/c-riscv.texi b/gas/doc/c-riscv.texi
index b175ba0a7293..e7fdbfa22afb 100644
--- a/gas/doc/c-riscv.texi
+++ b/gas/doc/c-riscv.texi
@@ -65,9 +65,8 @@ aren't set, then assembler will check the default configure setting
 @item -mabi=ABI
 Selects the ABI, which is either "ilp32" or "lp64", optionally followed
 by "f", "d", or "q" to indicate single-precision, double-precision, or
-quad-precision floating-point calling convention, or none to indicate
-the soft-float calling convention.  Also, "ilp32" can optionally be followed
-by "e" to indicate the RVE ABI, which is always soft-float.
+quad-precision floating-point calling convention, or none or "e" to indicate
+the soft-float calling convention ("e" indicates a soft-float RVE ABI).
 
 @cindex @samp{-mrelax} option, RISC-V
 @item -mrelax
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
index f7306cb24d20..419a01d5d53a 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32d/lp64d ABI can't be used when d extension isn't supported
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
index 706690ac9c64..7b2fcda8d685 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32f/lp64f ABI can't be used when f extension isn't supported
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
index ab64b1546f63..a06e9ea1aa93 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32q/lp64q ABI can't be used when q extension isn't supported
-- 
2.41.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 1/2] RISC-V: Remove RV64E conflict
  2023-07-25  2:26 ` [PATCH 1/2] RISC-V: Remove RV64E conflict Tsukasa OI
@ 2023-07-25 13:27   ` Kito Cheng
  0 siblings, 0 replies; 16+ messages in thread
From: Kito Cheng @ 2023-07-25 13:27 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Nelson Chu, Palmer Dabbelt, binutils

Reviewed-by: Kito Cheng <kito.cheng@sifive.com>

On Tue, Jul 25, 2023 at 10:27 AM Tsukasa OI
<research_trasio@irq.a4lg.com> wrote:
>
> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>
> Since RV32E *and* RV64E are ratified, RV64E is no longer invalid.
>
> This commit removes a restriction that prevents making base ISA with
> reduced GPRs with XLEN > 32.
>
> bfd/ChangeLog:
>
>         * elfxx-riscv.c (riscv_parse_check_conflicts): Remove RV64E
>         conflict since the ratified 'E' base ISAs include RV64E.
>
> gas/ChangeLog:
>
>         * testsuite/gas/riscv/march-fail-base-02.d: Removed.
>         * testsuite/gas/riscv/march-fail-base-02.l: Removed.
> ---
>  bfd/elfxx-riscv.c                            | 7 -------
>  gas/testsuite/gas/riscv/march-fail-base-02.d | 3 ---
>  gas/testsuite/gas/riscv/march-fail-base-02.l | 2 --
>  3 files changed, 12 deletions(-)
>  delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.d
>  delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.l
>
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index b43d2cfa0fab..205dd0766abe 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -1933,13 +1933,6 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps)
>    int xlen = *rps->xlen;
>    bool no_conflict = true;
>
> -  if (riscv_lookup_subset (rps->subset_list, "e", &subset)
> -      && xlen > 32)
> -    {
> -      rps->error_handler
> -       (_("rv%d does not support the `e' extension"), xlen);
> -      no_conflict = false;
> -    }
>    if (riscv_lookup_subset (rps->subset_list, "q", &subset)
>        && (subset->major_version < 2 || (subset->major_version == 2
>                                         && subset->minor_version < 2))
> diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.d b/gas/testsuite/gas/riscv/march-fail-base-02.d
> deleted file mode 100644
> index cfe085ab21aa..000000000000
> --- a/gas/testsuite/gas/riscv/march-fail-base-02.d
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -#as: -march=rv64e
> -#source: empty.s
> -#error_output: march-fail-base-02.l
> diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.l b/gas/testsuite/gas/riscv/march-fail-base-02.l
> deleted file mode 100644
> index 52fee96af368..000000000000
> --- a/gas/testsuite/gas/riscv/march-fail-base-02.l
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -.*Assembler messages:
> -.*Error: rv64 does not support the `e' extension
> --
> 2.41.0
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 2/2] RISC-V: Add "lp64e" ABI support
  2023-07-25  2:26 ` [PATCH 2/2] RISC-V: Add "lp64e" ABI support Tsukasa OI
@ 2023-07-25 13:27   ` Kito Cheng
  0 siblings, 0 replies; 16+ messages in thread
From: Kito Cheng @ 2023-07-25 13:27 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Nelson Chu, Palmer Dabbelt, binutils

Reviewed-by: Kito Cheng <kito.cheng@sifive.com>

On Tue, Jul 25, 2023 at 10:27 AM Tsukasa OI
<research_trasio@irq.a4lg.com> wrote:
>
> From: Tsukasa OI <research_trasio@irq.a4lg.com>
>
> Since RV32E and RV64E are now ratified, this commit prepares the ABI
> support for LP64E (LP64 with reduced GPRs).
>
> gas/ChangeLog:
>
>         * config/tc-riscv.c (riscv_set_abi_by_arch): Update the error
>         message.  (md_parse_option): Accept "lp64e".
>         * doc/c-riscv.texi: Update the documentation to allow "lp64e".
>         * testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l:
>         Change error message.
>         * testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l: Likewise.
>         * testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l: Likewise.
> ---
>  gas/config/tc-riscv.c                           | 4 +++-
>  gas/doc/c-riscv.texi                            | 5 ++---
>  gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l | 2 +-
>  gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l | 2 +-
>  gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l | 2 +-
>  5 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index 80c14a3cd221..963f9967638f 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -384,7 +384,7 @@ riscv_set_abi_by_arch (void)
>         as_bad ("%d-bit ABI not yet supported on %d-bit ISA", abi_xlen, xlen);
>
>        if (riscv_subset_supports (&riscv_rps_as, "e") && !rve_abi)
> -       as_bad ("only the ilp32e ABI is supported for e extension");
> +       as_bad ("only ilp32e/lp64e ABI are supported for e extension");
>
>        if (float_abi == FLOAT_ABI_SINGLE
>           && !riscv_subset_supports (&riscv_rps_as, "f"))
> @@ -3897,6 +3897,8 @@ md_parse_option (int c, const char *arg)
>         riscv_set_abi (32, FLOAT_ABI_QUAD, false);
>        else if (strcmp (arg, "lp64") == 0)
>         riscv_set_abi (64, FLOAT_ABI_SOFT, false);
> +      else if (strcmp (arg, "lp64e") == 0)
> +       riscv_set_abi (64, FLOAT_ABI_SOFT, true);
>        else if (strcmp (arg, "lp64f") == 0)
>         riscv_set_abi (64, FLOAT_ABI_SINGLE, false);
>        else if (strcmp (arg, "lp64d") == 0)
> diff --git a/gas/doc/c-riscv.texi b/gas/doc/c-riscv.texi
> index b175ba0a7293..e7fdbfa22afb 100644
> --- a/gas/doc/c-riscv.texi
> +++ b/gas/doc/c-riscv.texi
> @@ -65,9 +65,8 @@ aren't set, then assembler will check the default configure setting
>  @item -mabi=ABI
>  Selects the ABI, which is either "ilp32" or "lp64", optionally followed
>  by "f", "d", or "q" to indicate single-precision, double-precision, or
> -quad-precision floating-point calling convention, or none to indicate
> -the soft-float calling convention.  Also, "ilp32" can optionally be followed
> -by "e" to indicate the RVE ABI, which is always soft-float.
> +quad-precision floating-point calling convention, or none or "e" to indicate
> +the soft-float calling convention ("e" indicates a soft-float RVE ABI).
>
>  @cindex @samp{-mrelax} option, RISC-V
>  @item -mrelax
> diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
> index f7306cb24d20..419a01d5d53a 100644
> --- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
> +++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
> @@ -1,4 +1,4 @@
>  .*Assembler messages:
>  .*Error: can't have 64-bit ABI on 32-bit ISA
> -.*Error: only the ilp32e ABI is supported for e extension
> +.*Error: only ilp32e/lp64e ABI are supported for e extension
>  .*Error: ilp32d/lp64d ABI can't be used when d extension isn't supported
> diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
> index 706690ac9c64..7b2fcda8d685 100644
> --- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
> +++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
> @@ -1,4 +1,4 @@
>  .*Assembler messages:
>  .*Error: can't have 64-bit ABI on 32-bit ISA
> -.*Error: only the ilp32e ABI is supported for e extension
> +.*Error: only ilp32e/lp64e ABI are supported for e extension
>  .*Error: ilp32f/lp64f ABI can't be used when f extension isn't supported
> diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
> index ab64b1546f63..a06e9ea1aa93 100644
> --- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
> +++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
> @@ -1,4 +1,4 @@
>  .*Assembler messages:
>  .*Error: can't have 64-bit ABI on 32-bit ISA
> -.*Error: only the ilp32e ABI is supported for e extension
> +.*Error: only ilp32e/lp64e ABI are supported for e extension
>  .*Error: ilp32q/lp64q ABI can't be used when q extension isn't supported
> --
> 2.41.0
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs
  2023-07-25  2:26 [PATCH 0/2] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2023-07-25  2:26 ` [PATCH 1/2] RISC-V: Remove RV64E conflict Tsukasa OI
  2023-07-25  2:26 ` [PATCH 2/2] RISC-V: Add "lp64e" ABI support Tsukasa OI
@ 2023-08-31  3:21 ` Tsukasa OI
  2023-08-31  3:21   ` [PATCH v2 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
                     ` (3 more replies)
  2 siblings, 4 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-08-31  3:21 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

Hi,

PATCH v1 (only Binutils):
<https://sourceware.org/pipermail/binutils/2023-July/128583.html>

Changes: v1 -> v2
-   Added preliminary GDB support


Related Project:
    PATCH 1/3: Binutils
    PATCH 2/3: Binutils
    PATCH 3/3: GDB



This patch set reflects ratified 'E' base ISAs (except version number of
'E') and draft/pre-draft RVE ABIs, ILP32E and LP64E.

RV32E / RV64E (ratified): The latest RISC-V ISA Manual
<https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-1239329-2023-05-23>
ILP32E (draft): RISCV ABIs Specification version 1.0
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/releases/tag/v1.0>
LP64E (pre-draft): Submission to add RVE API corresponding RV64E
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/299>

Adding pre-draft LP64E would be a problem on GCC but I bet not on Binutils
(ELF flags [to handle on Binutils/GAS] are not very detailed).


Note that this patch set does not reflect the version number of the 'E' base
ISA (ratified version 2.0) because the latest ratified specification,
"20191213", comes with the draft version 1.9 and adding the version 2.0 with
ISA_SPEC_CLASS_DRAFT does not work (due to the default value of
`DEFAULT_RISCV_ISA_SPEC'; note that it cannot be set to "draft").

I think the next unprivileged ISA specification release is the best timing
to add 'E' version 2.0 (along with new ISA_SPEC_CLASS_20??????).

Thanks,
Tsukasa




Tsukasa OI (3):
  RISC-V: Remove RV64E conflict
  RISC-V: Add "lp64e" ABI support
  RISC-V: Add RV64E support to GDB

 bfd/elfxx-riscv.c                             |  7 -----
 gas/config/tc-riscv.c                         |  4 ++-
 gas/doc/c-riscv.texi                          |  5 ++-
 .../gas/riscv/mabi-fail-rv32e-lp64d.l         |  2 +-
 .../gas/riscv/mabi-fail-rv32e-lp64f.l         |  2 +-
 .../gas/riscv/mabi-fail-rv32e-lp64q.l         |  2 +-
 gas/testsuite/gas/riscv/march-fail-base-02.d  |  3 --
 gas/testsuite/gas/riscv/march-fail-base-02.l  |  2 --
 gdb/arch/riscv.c                              | 15 +++++++--
 gdb/arch/riscv.h                              |  2 +-
 gdb/features/Makefile                         |  1 +
 gdb/features/riscv/rv64e-xregs.c              | 30 ++++++++++++++++++
 gdb/features/riscv/rv64e-xregs.xml            | 31 +++++++++++++++++++
 gdb/riscv-tdep.c                              |  9 +-----
 14 files changed, 85 insertions(+), 30 deletions(-)
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.d
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.l
 create mode 100644 gdb/features/riscv/rv64e-xregs.c
 create mode 100644 gdb/features/riscv/rv64e-xregs.xml


base-commit: 68a2d9bf874643da970fe945a9c60c397f6882ad
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v2 1/3] RISC-V: Remove RV64E conflict
  2023-08-31  3:21 ` [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
@ 2023-08-31  3:21   ` Tsukasa OI
  2023-08-31  3:21   ` [PATCH v2 2/3] RISC-V: Add "lp64e" ABI support Tsukasa OI
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-08-31  3:21 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E *and* RV64E are ratified, RV64E is no longer invalid.

This commit removes a restriction that prevents making base ISA with
reduced GPRs with XLEN > 32.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_parse_check_conflicts): Remove RV64E
	conflict since the ratified 'E' base ISAs include RV64E.

gas/ChangeLog:

	* testsuite/gas/riscv/march-fail-base-02.d: Removed.
	* testsuite/gas/riscv/march-fail-base-02.l: Removed.
---
 bfd/elfxx-riscv.c                            | 7 -------
 gas/testsuite/gas/riscv/march-fail-base-02.d | 3 ---
 gas/testsuite/gas/riscv/march-fail-base-02.l | 2 --
 3 files changed, 12 deletions(-)
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.d
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.l

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index cb65024beaff..9a397c5a8d1c 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1942,13 +1942,6 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps)
   int xlen = *rps->xlen;
   bool no_conflict = true;
 
-  if (riscv_lookup_subset (rps->subset_list, "e", &subset)
-      && xlen > 32)
-    {
-      rps->error_handler
-	(_("rv%d does not support the `e' extension"), xlen);
-      no_conflict = false;
-    }
   if (riscv_lookup_subset (rps->subset_list, "q", &subset)
       && (subset->major_version < 2 || (subset->major_version == 2
 					&& subset->minor_version < 2))
diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.d b/gas/testsuite/gas/riscv/march-fail-base-02.d
deleted file mode 100644
index cfe085ab21aa..000000000000
--- a/gas/testsuite/gas/riscv/march-fail-base-02.d
+++ /dev/null
@@ -1,3 +0,0 @@
-#as: -march=rv64e
-#source: empty.s
-#error_output: march-fail-base-02.l
diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.l b/gas/testsuite/gas/riscv/march-fail-base-02.l
deleted file mode 100644
index 52fee96af368..000000000000
--- a/gas/testsuite/gas/riscv/march-fail-base-02.l
+++ /dev/null
@@ -1,2 +0,0 @@
-.*Assembler messages:
-.*Error: rv64 does not support the `e' extension
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v2 2/3] RISC-V: Add "lp64e" ABI support
  2023-08-31  3:21 ` [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2023-08-31  3:21   ` [PATCH v2 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
@ 2023-08-31  3:21   ` Tsukasa OI
  2023-08-31  3:21   ` [PATCH v2 3/3] RISC-V: Add RV64E support to GDB Tsukasa OI
  2023-09-05  9:08   ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  3 siblings, 0 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-08-31  3:21 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E and RV64E are now ratified, this commit prepares the ABI
support for LP64E (LP64 with reduced GPRs).

gas/ChangeLog:

	* config/tc-riscv.c (riscv_set_abi_by_arch): Update the error
	message.  (md_parse_option): Accept "lp64e".
	* doc/c-riscv.texi: Update the documentation to allow "lp64e".
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l:
	Change error message.
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l: Likewise.
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l: Likewise.
---
 gas/config/tc-riscv.c                           | 4 +++-
 gas/doc/c-riscv.texi                            | 5 ++---
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l | 2 +-
 5 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 959cbbc32a5e..d0caf691fc65 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -384,7 +384,7 @@ riscv_set_abi_by_arch (void)
 	as_bad ("%d-bit ABI not yet supported on %d-bit ISA", abi_xlen, xlen);
 
       if (riscv_subset_supports (&riscv_rps_as, "e") && !rve_abi)
-	as_bad ("only the ilp32e ABI is supported for e extension");
+	as_bad ("only ilp32e/lp64e ABI are supported for e extension");
 
       if (float_abi == FLOAT_ABI_SINGLE
 	  && !riscv_subset_supports (&riscv_rps_as, "f"))
@@ -3897,6 +3897,8 @@ md_parse_option (int c, const char *arg)
 	riscv_set_abi (32, FLOAT_ABI_QUAD, false);
       else if (strcmp (arg, "lp64") == 0)
 	riscv_set_abi (64, FLOAT_ABI_SOFT, false);
+      else if (strcmp (arg, "lp64e") == 0)
+	riscv_set_abi (64, FLOAT_ABI_SOFT, true);
       else if (strcmp (arg, "lp64f") == 0)
 	riscv_set_abi (64, FLOAT_ABI_SINGLE, false);
       else if (strcmp (arg, "lp64d") == 0)
diff --git a/gas/doc/c-riscv.texi b/gas/doc/c-riscv.texi
index b175ba0a7293..e7fdbfa22afb 100644
--- a/gas/doc/c-riscv.texi
+++ b/gas/doc/c-riscv.texi
@@ -65,9 +65,8 @@ aren't set, then assembler will check the default configure setting
 @item -mabi=ABI
 Selects the ABI, which is either "ilp32" or "lp64", optionally followed
 by "f", "d", or "q" to indicate single-precision, double-precision, or
-quad-precision floating-point calling convention, or none to indicate
-the soft-float calling convention.  Also, "ilp32" can optionally be followed
-by "e" to indicate the RVE ABI, which is always soft-float.
+quad-precision floating-point calling convention, or none or "e" to indicate
+the soft-float calling convention ("e" indicates a soft-float RVE ABI).
 
 @cindex @samp{-mrelax} option, RISC-V
 @item -mrelax
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
index f7306cb24d20..419a01d5d53a 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32d/lp64d ABI can't be used when d extension isn't supported
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
index 706690ac9c64..7b2fcda8d685 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32f/lp64f ABI can't be used when f extension isn't supported
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
index ab64b1546f63..a06e9ea1aa93 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32q/lp64q ABI can't be used when q extension isn't supported
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v2 3/3] RISC-V: Add RV64E support to GDB
  2023-08-31  3:21 ` [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2023-08-31  3:21   ` [PATCH v2 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
  2023-08-31  3:21   ` [PATCH v2 2/3] RISC-V: Add "lp64e" ABI support Tsukasa OI
@ 2023-08-31  3:21   ` Tsukasa OI
  2023-09-05  9:08   ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  3 siblings, 0 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-08-31  3:21 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E and RV64E are ratified, RV64E is no longer invalid.
So, this commit adds RV64E support for various parts.
---
 gdb/arch/riscv.c                   | 15 +++++++++++++--
 gdb/arch/riscv.h                   |  2 +-
 gdb/features/Makefile              |  1 +
 gdb/features/riscv/rv64e-xregs.c   | 30 +++++++++++++++++++++++++++++
 gdb/features/riscv/rv64e-xregs.xml | 31 ++++++++++++++++++++++++++++++
 gdb/riscv-tdep.c                   |  9 +--------
 6 files changed, 77 insertions(+), 11 deletions(-)
 create mode 100644 gdb/features/riscv/rv64e-xregs.c
 create mode 100644 gdb/features/riscv/rv64e-xregs.xml

diff --git a/gdb/arch/riscv.c b/gdb/arch/riscv.c
index 6f6fcb081e81..346fc1d0230d 100644
--- a/gdb/arch/riscv.c
+++ b/gdb/arch/riscv.c
@@ -25,6 +25,7 @@
 #include "../features/riscv/32bit-fpu.c"
 #include "../features/riscv/64bit-fpu.c"
 #include "../features/riscv/rv32e-xregs.c"
+#include "../features/riscv/rv64e-xregs.c"
 
 #ifndef GDBSERVER
 #define STATIC_IN_GDB static
@@ -51,7 +52,12 @@ riscv_create_target_description (const struct riscv_gdbarch_features features)
 	arch_name.append (":rv32i");
     }
   else if (features.xlen == 8)
-    arch_name.append (":rv64i");
+    {
+      if (features.embedded)
+	arch_name.append (":rv64e");
+      else
+	arch_name.append (":rv64i");
+    }
   else if (features.xlen == 16)
     arch_name.append (":rv128i");
 
@@ -76,7 +82,12 @@ riscv_create_target_description (const struct riscv_gdbarch_features features)
 	regnum = create_feature_riscv_32bit_cpu (tdesc.get (), regnum);
     }
   else if (features.xlen == 8)
-    regnum = create_feature_riscv_64bit_cpu (tdesc.get (), regnum);
+    {
+      if (features.embedded)
+	regnum = create_feature_riscv_rv64e_xregs (tdesc.get (), regnum);
+      else
+	regnum = create_feature_riscv_64bit_cpu (tdesc.get (), regnum);
+    }
 
   /* For now we only support creating 32-bit or 64-bit f-registers.  */
   if (features.flen == 4)
diff --git a/gdb/arch/riscv.h b/gdb/arch/riscv.h
index e1965da69ebb..abbac59aa09b 100644
--- a/gdb/arch/riscv.h
+++ b/gdb/arch/riscv.h
@@ -53,7 +53,7 @@ struct riscv_gdbarch_features
      vector size.  */
   int vlen = 0;
 
-  /* When true this target is RV32E.  */
+  /* When true this target is RV32E or RV64E.  */
   bool embedded = false;
 
   /* Track if the target description has an fcsr, fflags, and frm
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 32341f718156..a2719d0cd813 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -238,6 +238,7 @@ FEATURE_XMLFILES = aarch64-core.xml \
 	loongarch/base64.xml \
 	loongarch/fpu.xml \
 	riscv/rv32e-xregs.xml \
+	riscv/rv64e-xregs.xml \
 	riscv/32bit-cpu.xml \
 	riscv/32bit-fpu.xml \
 	riscv/64bit-cpu.xml \
diff --git a/gdb/features/riscv/rv64e-xregs.c b/gdb/features/riscv/rv64e-xregs.c
new file mode 100644
index 000000000000..4346c3004ba8
--- /dev/null
+++ b/gdb/features/riscv/rv64e-xregs.c
@@ -0,0 +1,30 @@
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: rv64e-xregs.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_riscv_rv64e_xregs (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.cpu");
+  tdesc_create_reg (feature, "zero", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "ra", regnum++, 1, NULL, 64, "code_ptr");
+  tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "tp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "t0", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "t1", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "t2", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "s1", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a0", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a1", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a2", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a3", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a4", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a5", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 64, "code_ptr");
+  return regnum;
+}
diff --git a/gdb/features/riscv/rv64e-xregs.xml b/gdb/features/riscv/rv64e-xregs.xml
new file mode 100644
index 000000000000..103588fd7f2d
--- /dev/null
+++ b/gdb/features/riscv/rv64e-xregs.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2018-2023 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!-- Register numbers are hard-coded in order to maintain backward
+     compatibility with older versions of tools that didn't use xml
+     register descriptions.  -->
+
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.riscv.cpu">
+  <reg name="zero" bitsize="64" type="int" regnum="0"/>
+  <reg name="ra" bitsize="64" type="code_ptr"/>
+  <reg name="sp" bitsize="64" type="data_ptr"/>
+  <reg name="gp" bitsize="64" type="data_ptr"/>
+  <reg name="tp" bitsize="64" type="data_ptr"/>
+  <reg name="t0" bitsize="64" type="int"/>
+  <reg name="t1" bitsize="64" type="int"/>
+  <reg name="t2" bitsize="64" type="int"/>
+  <reg name="fp" bitsize="64" type="data_ptr"/>
+  <reg name="s1" bitsize="64" type="int"/>
+  <reg name="a0" bitsize="64" type="int"/>
+  <reg name="a1" bitsize="64" type="int"/>
+  <reg name="a2" bitsize="64" type="int"/>
+  <reg name="a3" bitsize="64" type="int"/>
+  <reg name="a4" bitsize="64" type="int"/>
+  <reg name="a5" bitsize="64" type="int"/>
+  <reg name="pc" bitsize="64" type="code_ptr"/>
+</feature>
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index ae18eb644527..b230ba634147 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -3847,14 +3847,7 @@ riscv_features_from_bfd (const bfd *abfd)
 	features.flen = 4;
 
       if (e_flags & EF_RISCV_RVE)
-	{
-	  if (features.xlen == 8)
-	    {
-	      warning (_("64-bit ELF with RV32E flag set!  Assuming 32-bit"));
-	      features.xlen = 4;
-	    }
-	  features.embedded = true;
-	}
+	features.embedded = true;
     }
 
   return features;
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs
  2023-08-31  3:21 ` [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
                     ` (2 preceding siblings ...)
  2023-08-31  3:21   ` [PATCH v2 3/3] RISC-V: Add RV64E support to GDB Tsukasa OI
@ 2023-09-05  9:08   ` Tsukasa OI
  2023-09-05  9:08     ` [PATCH v3 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
                       ` (3 more replies)
  3 siblings, 4 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-09-05  9:08 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

Hi,

PATCH v1 (only Binutils):
<https://sourceware.org/pipermail/binutils/2023-July/128583.html>
PATCH v2 (Binutils+GDB):
<https://sourceware.org/pipermail/binutils/2023-August/129314.html>

Changes: v1 -> v2
-   Added GDB support

Changes: v2 -> v3
-   Rebased against the latest master
    (PATCH 1/3 related merge conflict is now resolved)


Related Project:
    PATCH 1/3: Binutils
    PATCH 2/3: Binutils
    PATCH 3/3: GDB



This patch set reflects ratified 'E' base ISAs (except version number of
'E') and draft/pre-draft RVE ABIs, ILP32E and LP64E.

RV32E / RV64E (ratified): The latest RISC-V ISA Manual
<https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-1239329-2023-05-23>
ILP32E (draft): RISCV ABIs Specification version 1.0
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/releases/tag/v1.0>
LP64E (pre-draft): Submission to add RVE API corresponding RV64E
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/299>

Adding pre-draft LP64E would be a problem on GCC but I bet not on Binutils
(ELF flags [to handle on Binutils/GAS] are not very detailed).


Note that this patch set does not reflect the version number of the 'E' base
ISA (ratified version 2.0) because the latest ratified specification,
"20191213", comes with the draft version 1.9 and adding the version 2.0 with
ISA_SPEC_CLASS_DRAFT does not work (due to the default value of
`DEFAULT_RISCV_ISA_SPEC'; note that it cannot be set to "draft").

I think the next unprivileged ISA specification release is the best timing
to add 'E' version 2.0 (along with new ISA_SPEC_CLASS_20??????).

Thanks,
Tsukasa




Tsukasa OI (3):
  RISC-V: Remove RV64E conflict
  RISC-V: Add "lp64e" ABI support
  RISC-V: Add RV64E support to GDB

 bfd/elfxx-riscv.c                             |  7 -----
 gas/config/tc-riscv.c                         |  4 ++-
 gas/doc/c-riscv.texi                          |  5 ++-
 .../gas/riscv/mabi-fail-rv32e-lp64d.l         |  2 +-
 .../gas/riscv/mabi-fail-rv32e-lp64f.l         |  2 +-
 .../gas/riscv/mabi-fail-rv32e-lp64q.l         |  2 +-
 gas/testsuite/gas/riscv/march-fail-base-02.d  |  3 --
 gas/testsuite/gas/riscv/march-fail-base-02.l  |  2 --
 gdb/arch/riscv.c                              | 15 +++++++--
 gdb/arch/riscv.h                              |  2 +-
 gdb/features/Makefile                         |  1 +
 gdb/features/riscv/rv64e-xregs.c              | 30 ++++++++++++++++++
 gdb/features/riscv/rv64e-xregs.xml            | 31 +++++++++++++++++++
 gdb/riscv-tdep.c                              |  9 +-----
 14 files changed, 85 insertions(+), 30 deletions(-)
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.d
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.l
 create mode 100644 gdb/features/riscv/rv64e-xregs.c
 create mode 100644 gdb/features/riscv/rv64e-xregs.xml


base-commit: d4868004365e6bc4232a1b8ebd4b328fc5bec8b1
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v3 1/3] RISC-V: Remove RV64E conflict
  2023-09-05  9:08   ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
@ 2023-09-05  9:08     ` Tsukasa OI
  2023-09-05  9:08     ` [PATCH v3 2/3] RISC-V: Add "lp64e" ABI support Tsukasa OI
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-09-05  9:08 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E *and* RV64E are ratified, RV64E is no longer invalid.

This commit removes a restriction that prevents making base ISA with
reduced GPRs with XLEN > 32.

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_parse_check_conflicts): Remove RV64E
	conflict since the ratified 'E' base ISAs include RV64E.

gas/ChangeLog:

	* testsuite/gas/riscv/march-fail-base-02.d: Removed.
	* testsuite/gas/riscv/march-fail-base-02.l: Removed.
---
 bfd/elfxx-riscv.c                            | 7 -------
 gas/testsuite/gas/riscv/march-fail-base-02.d | 3 ---
 gas/testsuite/gas/riscv/march-fail-base-02.l | 2 --
 3 files changed, 12 deletions(-)
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.d
 delete mode 100644 gas/testsuite/gas/riscv/march-fail-base-02.l

diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index e642a05fe5b8..4553075735f8 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -1946,13 +1946,6 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps)
   int xlen = *rps->xlen;
   bool no_conflict = true;
 
-  if (riscv_lookup_subset (rps->subset_list, "e", &subset)
-      && xlen > 32)
-    {
-      rps->error_handler
-	(_("rv%d does not support the `e' extension"), xlen);
-      no_conflict = false;
-    }
   if (riscv_subset_supports (rps, "e")
       && riscv_subset_supports (rps, "h"))
     {
diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.d b/gas/testsuite/gas/riscv/march-fail-base-02.d
deleted file mode 100644
index cfe085ab21aa..000000000000
--- a/gas/testsuite/gas/riscv/march-fail-base-02.d
+++ /dev/null
@@ -1,3 +0,0 @@
-#as: -march=rv64e
-#source: empty.s
-#error_output: march-fail-base-02.l
diff --git a/gas/testsuite/gas/riscv/march-fail-base-02.l b/gas/testsuite/gas/riscv/march-fail-base-02.l
deleted file mode 100644
index 52fee96af368..000000000000
--- a/gas/testsuite/gas/riscv/march-fail-base-02.l
+++ /dev/null
@@ -1,2 +0,0 @@
-.*Assembler messages:
-.*Error: rv64 does not support the `e' extension
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v3 2/3] RISC-V: Add "lp64e" ABI support
  2023-09-05  9:08   ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2023-09-05  9:08     ` [PATCH v3 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
@ 2023-09-05  9:08     ` Tsukasa OI
  2023-09-05  9:08     ` [PATCH v3 3/3] RISC-V: Add RV64E support to GDB Tsukasa OI
  2023-09-25  3:07     ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Nelson Chu
  3 siblings, 0 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-09-05  9:08 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E and RV64E are now ratified, this commit prepares the ABI
support for LP64E (LP64 with reduced GPRs).

gas/ChangeLog:

	* config/tc-riscv.c (riscv_set_abi_by_arch): Update the error
	message.  (md_parse_option): Accept "lp64e".
	* doc/c-riscv.texi: Update the documentation to allow "lp64e".
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l:
	Change error message.
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l: Likewise.
	* testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l: Likewise.
---
 gas/config/tc-riscv.c                           | 4 +++-
 gas/doc/c-riscv.texi                            | 5 ++---
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l | 2 +-
 gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l | 2 +-
 5 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index e3bcf8b280eb..f2a031735eb4 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -386,7 +386,7 @@ riscv_set_abi_by_arch (void)
 	as_bad ("%d-bit ABI not yet supported on %d-bit ISA", abi_xlen, xlen);
 
       if (riscv_subset_supports (&riscv_rps_as, "e") && !rve_abi)
-	as_bad ("only the ilp32e ABI is supported for e extension");
+	as_bad ("only ilp32e/lp64e ABI are supported for e extension");
 
       if (float_abi == FLOAT_ABI_SINGLE
 	  && !riscv_subset_supports (&riscv_rps_as, "f"))
@@ -3871,6 +3871,8 @@ md_parse_option (int c, const char *arg)
 	riscv_set_abi (32, FLOAT_ABI_QUAD, false);
       else if (strcmp (arg, "lp64") == 0)
 	riscv_set_abi (64, FLOAT_ABI_SOFT, false);
+      else if (strcmp (arg, "lp64e") == 0)
+	riscv_set_abi (64, FLOAT_ABI_SOFT, true);
       else if (strcmp (arg, "lp64f") == 0)
 	riscv_set_abi (64, FLOAT_ABI_SINGLE, false);
       else if (strcmp (arg, "lp64d") == 0)
diff --git a/gas/doc/c-riscv.texi b/gas/doc/c-riscv.texi
index b175ba0a7293..e7fdbfa22afb 100644
--- a/gas/doc/c-riscv.texi
+++ b/gas/doc/c-riscv.texi
@@ -65,9 +65,8 @@ aren't set, then assembler will check the default configure setting
 @item -mabi=ABI
 Selects the ABI, which is either "ilp32" or "lp64", optionally followed
 by "f", "d", or "q" to indicate single-precision, double-precision, or
-quad-precision floating-point calling convention, or none to indicate
-the soft-float calling convention.  Also, "ilp32" can optionally be followed
-by "e" to indicate the RVE ABI, which is always soft-float.
+quad-precision floating-point calling convention, or none or "e" to indicate
+the soft-float calling convention ("e" indicates a soft-float RVE ABI).
 
 @cindex @samp{-mrelax} option, RISC-V
 @item -mrelax
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
index f7306cb24d20..419a01d5d53a 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64d.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32d/lp64d ABI can't be used when d extension isn't supported
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
index 706690ac9c64..7b2fcda8d685 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64f.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32f/lp64f ABI can't be used when f extension isn't supported
diff --git a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
index ab64b1546f63..a06e9ea1aa93 100644
--- a/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
+++ b/gas/testsuite/gas/riscv/mabi-fail-rv32e-lp64q.l
@@ -1,4 +1,4 @@
 .*Assembler messages:
 .*Error: can't have 64-bit ABI on 32-bit ISA
-.*Error: only the ilp32e ABI is supported for e extension
+.*Error: only ilp32e/lp64e ABI are supported for e extension
 .*Error: ilp32q/lp64q ABI can't be used when q extension isn't supported
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v3 3/3] RISC-V: Add RV64E support to GDB
  2023-09-05  9:08   ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
  2023-09-05  9:08     ` [PATCH v3 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
  2023-09-05  9:08     ` [PATCH v3 2/3] RISC-V: Add "lp64e" ABI support Tsukasa OI
@ 2023-09-05  9:08     ` Tsukasa OI
  2023-09-25  3:07     ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Nelson Chu
  3 siblings, 0 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-09-05  9:08 UTC (permalink / raw)
  To: Tsukasa OI, Palmer Dabbelt, Andrew Waterman, Jim Wilson,
	Nelson Chu, Kito Cheng
  Cc: binutils, gdb-patches

From: Tsukasa OI <research_trasio@irq.a4lg.com>

Since RV32E and RV64E are ratified, RV64E is no longer invalid.
So, this commit adds RV64E support for various parts.
---
 gdb/arch/riscv.c                   | 15 +++++++++++++--
 gdb/arch/riscv.h                   |  2 +-
 gdb/features/Makefile              |  1 +
 gdb/features/riscv/rv64e-xregs.c   | 30 +++++++++++++++++++++++++++++
 gdb/features/riscv/rv64e-xregs.xml | 31 ++++++++++++++++++++++++++++++
 gdb/riscv-tdep.c                   |  9 +--------
 6 files changed, 77 insertions(+), 11 deletions(-)
 create mode 100644 gdb/features/riscv/rv64e-xregs.c
 create mode 100644 gdb/features/riscv/rv64e-xregs.xml

diff --git a/gdb/arch/riscv.c b/gdb/arch/riscv.c
index 6f6fcb081e81..346fc1d0230d 100644
--- a/gdb/arch/riscv.c
+++ b/gdb/arch/riscv.c
@@ -25,6 +25,7 @@
 #include "../features/riscv/32bit-fpu.c"
 #include "../features/riscv/64bit-fpu.c"
 #include "../features/riscv/rv32e-xregs.c"
+#include "../features/riscv/rv64e-xregs.c"
 
 #ifndef GDBSERVER
 #define STATIC_IN_GDB static
@@ -51,7 +52,12 @@ riscv_create_target_description (const struct riscv_gdbarch_features features)
 	arch_name.append (":rv32i");
     }
   else if (features.xlen == 8)
-    arch_name.append (":rv64i");
+    {
+      if (features.embedded)
+	arch_name.append (":rv64e");
+      else
+	arch_name.append (":rv64i");
+    }
   else if (features.xlen == 16)
     arch_name.append (":rv128i");
 
@@ -76,7 +82,12 @@ riscv_create_target_description (const struct riscv_gdbarch_features features)
 	regnum = create_feature_riscv_32bit_cpu (tdesc.get (), regnum);
     }
   else if (features.xlen == 8)
-    regnum = create_feature_riscv_64bit_cpu (tdesc.get (), regnum);
+    {
+      if (features.embedded)
+	regnum = create_feature_riscv_rv64e_xregs (tdesc.get (), regnum);
+      else
+	regnum = create_feature_riscv_64bit_cpu (tdesc.get (), regnum);
+    }
 
   /* For now we only support creating 32-bit or 64-bit f-registers.  */
   if (features.flen == 4)
diff --git a/gdb/arch/riscv.h b/gdb/arch/riscv.h
index e1965da69ebb..abbac59aa09b 100644
--- a/gdb/arch/riscv.h
+++ b/gdb/arch/riscv.h
@@ -53,7 +53,7 @@ struct riscv_gdbarch_features
      vector size.  */
   int vlen = 0;
 
-  /* When true this target is RV32E.  */
+  /* When true this target is RV32E or RV64E.  */
   bool embedded = false;
 
   /* Track if the target description has an fcsr, fflags, and frm
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 32341f718156..a2719d0cd813 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -238,6 +238,7 @@ FEATURE_XMLFILES = aarch64-core.xml \
 	loongarch/base64.xml \
 	loongarch/fpu.xml \
 	riscv/rv32e-xregs.xml \
+	riscv/rv64e-xregs.xml \
 	riscv/32bit-cpu.xml \
 	riscv/32bit-fpu.xml \
 	riscv/64bit-cpu.xml \
diff --git a/gdb/features/riscv/rv64e-xregs.c b/gdb/features/riscv/rv64e-xregs.c
new file mode 100644
index 000000000000..4346c3004ba8
--- /dev/null
+++ b/gdb/features/riscv/rv64e-xregs.c
@@ -0,0 +1,30 @@
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: rv64e-xregs.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_riscv_rv64e_xregs (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.cpu");
+  tdesc_create_reg (feature, "zero", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "ra", regnum++, 1, NULL, 64, "code_ptr");
+  tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "tp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "t0", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "t1", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "t2", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 64, "data_ptr");
+  tdesc_create_reg (feature, "s1", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a0", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a1", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a2", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a3", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a4", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "a5", regnum++, 1, NULL, 64, "int");
+  tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 64, "code_ptr");
+  return regnum;
+}
diff --git a/gdb/features/riscv/rv64e-xregs.xml b/gdb/features/riscv/rv64e-xregs.xml
new file mode 100644
index 000000000000..103588fd7f2d
--- /dev/null
+++ b/gdb/features/riscv/rv64e-xregs.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2018-2023 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!-- Register numbers are hard-coded in order to maintain backward
+     compatibility with older versions of tools that didn't use xml
+     register descriptions.  -->
+
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.riscv.cpu">
+  <reg name="zero" bitsize="64" type="int" regnum="0"/>
+  <reg name="ra" bitsize="64" type="code_ptr"/>
+  <reg name="sp" bitsize="64" type="data_ptr"/>
+  <reg name="gp" bitsize="64" type="data_ptr"/>
+  <reg name="tp" bitsize="64" type="data_ptr"/>
+  <reg name="t0" bitsize="64" type="int"/>
+  <reg name="t1" bitsize="64" type="int"/>
+  <reg name="t2" bitsize="64" type="int"/>
+  <reg name="fp" bitsize="64" type="data_ptr"/>
+  <reg name="s1" bitsize="64" type="int"/>
+  <reg name="a0" bitsize="64" type="int"/>
+  <reg name="a1" bitsize="64" type="int"/>
+  <reg name="a2" bitsize="64" type="int"/>
+  <reg name="a3" bitsize="64" type="int"/>
+  <reg name="a4" bitsize="64" type="int"/>
+  <reg name="a5" bitsize="64" type="int"/>
+  <reg name="pc" bitsize="64" type="code_ptr"/>
+</feature>
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index ae18eb644527..b230ba634147 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -3847,14 +3847,7 @@ riscv_features_from_bfd (const bfd *abfd)
 	features.flen = 4;
 
       if (e_flags & EF_RISCV_RVE)
-	{
-	  if (features.xlen == 8)
-	    {
-	      warning (_("64-bit ELF with RV32E flag set!  Assuming 32-bit"));
-	      features.xlen = 4;
-	    }
-	  features.embedded = true;
-	}
+	features.embedded = true;
     }
 
   return features;
-- 
2.42.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs
  2023-09-05  9:08   ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
                       ` (2 preceding siblings ...)
  2023-09-05  9:08     ` [PATCH v3 3/3] RISC-V: Add RV64E support to GDB Tsukasa OI
@ 2023-09-25  3:07     ` Nelson Chu
  2023-09-25  8:04       ` Tsukasa OI
  3 siblings, 1 reply; 16+ messages in thread
From: Nelson Chu @ 2023-09-25  3:07 UTC (permalink / raw)
  To: Tsukasa OI
  Cc: Palmer Dabbelt, Andrew Waterman, Jim Wilson, Kito Cheng,
	binutils, gdb-patches

[-- Attachment #1: Type: text/plain, Size: 698 bytes --]

On Tue, Sep 5, 2023 at 5:08 PM Tsukasa OI <research_trasio@irq.a4lg.com>
wrote:

> Hi,
>
> PATCH v1 (only Binutils):
> <https://sourceware.org/pipermail/binutils/2023-July/128583.html>
> PATCH v2 (Binutils+GDB):
> <https://sourceware.org/pipermail/binutils/2023-August/129314.html>
>
> Changes: v1 -> v2
> -   Added GDB support
>
> Changes: v2 -> v3
> -   Rebased against the latest master
>     (PATCH 1/3 related merge conflict is now resolved)
>
>
> Related Project:
>     PATCH 1/3: Binutils
>     PATCH 2/3: Binutils
>

Looks good to me :-)


>     PATCH 3/3: GDB
>

I cannot approve anything about gdb, so this will need gdb experts to help.

Thanks
Nelson

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs
  2023-09-25  3:07     ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Nelson Chu
@ 2023-09-25  8:04       ` Tsukasa OI
  2023-10-16  8:20         ` Tsukasa OI
  0 siblings, 1 reply; 16+ messages in thread
From: Tsukasa OI @ 2023-09-25  8:04 UTC (permalink / raw)
  To: Nelson Chu; +Cc: Binutils

On 2023/09/25 12:07, Nelson Chu wrote:
> 
> 
> On Tue, Sep 5, 2023 at 5:08 PM Tsukasa OI <research_trasio@irq.a4lg.com
> <mailto:research_trasio@irq.a4lg.com>> wrote:
> 
>     Hi,
> 
>     PATCH v1 (only Binutils):
>     <https://sourceware.org/pipermail/binutils/2023-July/128583.html
>     <https://sourceware.org/pipermail/binutils/2023-July/128583.html>>
>     PATCH v2 (Binutils+GDB):
>     <https://sourceware.org/pipermail/binutils/2023-August/129314.html
>     <https://sourceware.org/pipermail/binutils/2023-August/129314.html>>
> 
>     Changes: v1 -> v2
>     -   Added GDB support
> 
>     Changes: v2 -> v3
>     -   Rebased against the latest master
>         (PATCH 1/3 related merge conflict is now resolved)
> 
> 
>     Related Project:
>         PATCH 1/3: Binutils
>         PATCH 2/3: Binutils
> 
> 
> Looks good to me :-)
>  
> 
>         PATCH 3/3: GDB
> 
> 
> I cannot approve anything about gdb, so this will need gdb experts to help.
> 
> Thanks
> Nelson
>  

Thanks, I understand that you cannot approve GDB part so it's okay.

I'll commit if GDB part is also approved or I confirm that not applying
PATCH 3/3 does not cause unnecessary effects to Binutils and GDB (in
this case, I'll commit only PATCH 1-2/3).

Tsukasa

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs
  2023-09-25  8:04       ` Tsukasa OI
@ 2023-10-16  8:20         ` Tsukasa OI
  0 siblings, 0 replies; 16+ messages in thread
From: Tsukasa OI @ 2023-10-16  8:20 UTC (permalink / raw)
  To: Binutils

Committed PATCH 1-2/3 because as far as I could test, there's no problem
even on the GDB side (except obviously, GDB cannot support RV64E ELF files).

Due to my tendonitis, I could not type much for recent few weeks.

Since it got much better (not complete recovery though), I should commit
the approved part before I forget (or tendonitis gets any worse).

Thanks,
Tsukasa

On 2023/09/25 17:04, Tsukasa OI wrote:
> On 2023/09/25 12:07, Nelson Chu wrote:
>>
>>
>> On Tue, Sep 5, 2023 at 5:08 PM Tsukasa OI <research_trasio@irq.a4lg.com
>> <mailto:research_trasio@irq.a4lg.com>> wrote:
>>
>>     Hi,
>>
>>     PATCH v1 (only Binutils):
>>     <https://sourceware.org/pipermail/binutils/2023-July/128583.html
>>     <https://sourceware.org/pipermail/binutils/2023-July/128583.html>>
>>     PATCH v2 (Binutils+GDB):
>>     <https://sourceware.org/pipermail/binutils/2023-August/129314.html
>>     <https://sourceware.org/pipermail/binutils/2023-August/129314.html>>
>>
>>     Changes: v1 -> v2
>>     -   Added GDB support
>>
>>     Changes: v2 -> v3
>>     -   Rebased against the latest master
>>         (PATCH 1/3 related merge conflict is now resolved)
>>
>>
>>     Related Project:
>>         PATCH 1/3: Binutils
>>         PATCH 2/3: Binutils
>>
>>
>> Looks good to me :-)
>>  
>>
>>         PATCH 3/3: GDB
>>
>>
>> I cannot approve anything about gdb, so this will need gdb experts to help.
>>
>> Thanks
>> Nelson
>>  
> 
> Thanks, I understand that you cannot approve GDB part so it's okay.
> 
> I'll commit if GDB part is also approved or I confirm that not applying
> PATCH 3/3 does not cause unnecessary effects to Binutils and GDB (in
> this case, I'll commit only PATCH 1-2/3).
> 
> Tsukasa

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2023-10-16  8:20 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-25  2:26 [PATCH 0/2] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
2023-07-25  2:26 ` [PATCH 1/2] RISC-V: Remove RV64E conflict Tsukasa OI
2023-07-25 13:27   ` Kito Cheng
2023-07-25  2:26 ` [PATCH 2/2] RISC-V: Add "lp64e" ABI support Tsukasa OI
2023-07-25 13:27   ` Kito Cheng
2023-08-31  3:21 ` [PATCH v2 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
2023-08-31  3:21   ` [PATCH v2 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
2023-08-31  3:21   ` [PATCH v2 2/3] RISC-V: Add "lp64e" ABI support Tsukasa OI
2023-08-31  3:21   ` [PATCH v2 3/3] RISC-V: Add RV64E support to GDB Tsukasa OI
2023-09-05  9:08   ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Tsukasa OI
2023-09-05  9:08     ` [PATCH v3 1/3] RISC-V: Remove RV64E conflict Tsukasa OI
2023-09-05  9:08     ` [PATCH v3 2/3] RISC-V: Add "lp64e" ABI support Tsukasa OI
2023-09-05  9:08     ` [PATCH v3 3/3] RISC-V: Add RV64E support to GDB Tsukasa OI
2023-09-25  3:07     ` [PATCH v3 0/3] RISC-V: Add ratified 'E' base ISA support with draft ABIs Nelson Chu
2023-09-25  8:04       ` Tsukasa OI
2023-10-16  8:20         ` Tsukasa OI

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).