public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/1] RISC-V: Add --march=help to print supported extensions and versions
@ 2024-02-21  3:37 Hau Hsu
  2024-02-21  3:37 ` [PATCH 1/1] RISC-V: Add --march=help Hau Hsu
  0 siblings, 1 reply; 4+ messages in thread
From: Hau Hsu @ 2024-02-21  3:37 UTC (permalink / raw)
  To: binutils, kito.cheng, hau.hsu

Comparing to v2, v3 parses the 'help' keyword in md_parse_option in gas/config/tc-riscv.c,
instead of riscv_parse_subset in elfxx-riscv.c.
Thanks for Tsukasa's suggestion
(https://patchwork.plctlab.org/project/binutils-gdb/patch/20240130063630.2931301-1-hau.hsu@sifive.com/#248218).


Hau Hsu (1):
  RISC-V: Add --march=help

 bfd/ChangeLog         |  9 ++++++
 bfd/elfxx-riscv.c     | 64 +++++++++++++++++++++++++++++++++++++++++++
 bfd/elfxx-riscv.h     |  3 ++
 gas/ChangeLog         |  4 +++
 gas/config/tc-riscv.c |  6 ++++
 5 files changed, 86 insertions(+)

-- 
2.31.1


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

* [PATCH 1/1] RISC-V: Add --march=help
  2024-02-21  3:37 [PATCH 0/1] RISC-V: Add --march=help to print supported extensions and versions Hau Hsu
@ 2024-02-21  3:37 ` Hau Hsu
  2024-02-23  4:25   ` Kito Cheng
  0 siblings, 1 reply; 4+ messages in thread
From: Hau Hsu @ 2024-02-21  3:37 UTC (permalink / raw)
  To: binutils, kito.cheng, hau.hsu

Use --march=help to print all supported extensions and versions.

Here is part of the output of `as -march=help`:
All available -march extensions for RISC-V:
        e                                       1.9
        i                                       2.1, 2.0
        m                                       2.0
        a                                       2.1, 2.0
        f                                       2.2, 2.0
        d                                       2.2, 2.0
        q                                       2.2, 2.0
        c                                       2.0
        v                                       1.0
        h                                       1.0
        zicbom                                  1.0
        zicbop                                  1.0

This patch assumes that the supported extensions with the same versions
are listed together.

For example
static struct riscv_supported_ext riscv_supported_std_ext[] =
{
  ...
  {"i",         ISA_SPEC_CLASS_20191213,        2, 1, 0 },
  {"i",         ISA_SPEC_CLASS_20190608,        2, 1, 0 },
  {"i",         ISA_SPEC_CLASS_2P2,             2, 0, 0 },
  ...
};

For the "i" extension, 2.1.0 with different spec class are listed together.
This patch records the previous printed extension and version.  If the
current extension and version are the same as the previous one, skip
printing.
---
 bfd/ChangeLog         |  9 ++++++
 bfd/elfxx-riscv.c     | 64 +++++++++++++++++++++++++++++++++++++++++++
 bfd/elfxx-riscv.h     |  3 ++
 gas/ChangeLog         |  4 +++
 gas/config/tc-riscv.c |  6 ++++
 5 files changed, 86 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 97d0c585a56..66572927998 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2024-02-21 Hau Hsu  <hau.hsu@sifive.com>
+
+	* elfxx-riscv.h (riscv_print_extensions): New declaration.
+	* elfxx-riscv.c (riscv_print_extensions): New function. Print
+	available extensions and versions.
+	(riscv_same_extension_version): New function.
+	(riscv_same_extension_diff_version): New function.
+	(riscv_valid_ext): New function.
+
 2024-01-15  Nick Clifton  <nickc@redhat.com>
 
 	* 2.42 branch point.
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index 9a121b47121..108e26d5b30 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -2051,6 +2051,70 @@ riscv_set_default_arch (riscv_parse_subset_t *rps)
     }
 }
 
+static
+bool riscv_same_extension_version(
+  const struct riscv_supported_ext* ext1,
+  const struct riscv_supported_ext* ext2)
+{
+  return (strcmp(ext1->name, ext2->name) == 0
+          && ext1->major_version == ext2->major_version
+          && ext1->minor_version == ext2->minor_version);
+}
+
+static
+bool riscv_same_extension_diff_version(
+  const struct riscv_supported_ext* ext1,
+  const struct riscv_supported_ext* ext2)
+{
+  return (strcmp(ext1->name, ext2->name) == 0
+          && !(ext1->major_version == ext2->major_version
+               && ext1->minor_version == ext2->minor_version));
+}
+
+static
+bool riscv_valid_ext(const struct riscv_supported_ext *ext)
+{
+  return (ext->isa_spec_class != ISA_SPEC_CLASS_NONE
+          && ext->major_version != RISCV_UNKNOWN_VERSION
+          && ext->minor_version != RISCV_UNKNOWN_VERSION);
+}
+
+void riscv_print_extensions(void)
+{
+  /* Record the previous pritned extension.
+     Print the current one if they are not the same.  */
+  const struct riscv_supported_ext *cur = NULL, *prev = NULL;
+
+  int i, j;
+  printf ("All available -march extensions for RISC-V:");
+  for (i = 0; riscv_all_supported_ext[i] != NULL; i++)
+    {
+      const struct riscv_supported_ext *exts = riscv_all_supported_ext[i];
+      prev = NULL;
+      for (j = 0; exts[j].name != NULL; j++)
+        {
+          cur = &exts[j];
+          if (!riscv_valid_ext (cur))
+            continue;
+
+          if (prev && riscv_same_extension_version (prev, cur))
+            continue;
+
+          if (!prev || !riscv_same_extension_diff_version (prev, cur))
+            {
+              printf("\n\t%-40s%d.%d", cur->name, cur->major_version, cur->minor_version);
+              prev = &exts[j];
+            }
+          else
+            {
+              printf(", %d.%d", cur->major_version, cur->minor_version);
+              prev = &exts[j];
+            }
+        }
+    }
+  printf ("\n");
+}
+
 /* Function for parsing ISA string.
 
    Return Value:
diff --git a/bfd/elfxx-riscv.h b/bfd/elfxx-riscv.h
index ae4cbee7bc3..f3710ec7fab 100644
--- a/bfd/elfxx-riscv.h
+++ b/bfd/elfxx-riscv.h
@@ -121,6 +121,9 @@ riscv_multi_subset_supports (riscv_parse_subset_t *, enum riscv_insn_class);
 extern const char *
 riscv_multi_subset_supports_ext (riscv_parse_subset_t *, enum riscv_insn_class);
 
+extern void
+riscv_print_extensions(void);
+
 extern void
 bfd_elf32_riscv_set_data_segment_info (struct bfd_link_info *, int *);
 extern void
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 88e61083c44..cebd9d94ae5 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2024-02-21 Hau Hsu  <hau.hsu@sifive.com>
+	* gas/config/tc-riscv.c (md_parse_option): Parse 'help' keyword in
+	march to print available extensions and versions.
+
 2024-02-19 Will Hawkins  <hawkinsw@obs.cr>
 
 	* config/tc-bpf.c (parse_expression): Change switch to if so that
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index a4161420128..e0910f59157 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -4034,6 +4034,12 @@ md_parse_option (int c, const char *arg)
   switch (c)
     {
     case OPTION_MARCH:
+      /* List all avaiable archs. */
+      if (strcmp (arg, "help") == 0)
+        {
+          riscv_print_extensions();
+          exit (EXIT_SUCCESS);
+        }
       default_arch_with_ext = arg;
       break;
 
-- 
2.31.1


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

* Re: [PATCH 1/1] RISC-V: Add --march=help
  2024-02-21  3:37 ` [PATCH 1/1] RISC-V: Add --march=help Hau Hsu
@ 2024-02-23  4:25   ` Kito Cheng
  2024-02-23  4:31     ` Hau Hsu
  0 siblings, 1 reply; 4+ messages in thread
From: Kito Cheng @ 2024-02-23  4:25 UTC (permalink / raw)
  To: Hau Hsu, Nelson Chu; +Cc: binutils

LGTM, and gcc have landed[1] the same option as well :)

[1] https://github.com/gcc-mirror/gcc/commit/7af0f1e107a480fbfe882cb985603960114aefb5

On Wed, Feb 21, 2024 at 11:38 AM Hau Hsu <hau.hsu@sifive.com> wrote:
>
> Use --march=help to print all supported extensions and versions.
>
> Here is part of the output of `as -march=help`:
> All available -march extensions for RISC-V:
>         e                                       1.9
>         i                                       2.1, 2.0
>         m                                       2.0
>         a                                       2.1, 2.0
>         f                                       2.2, 2.0
>         d                                       2.2, 2.0
>         q                                       2.2, 2.0
>         c                                       2.0
>         v                                       1.0
>         h                                       1.0
>         zicbom                                  1.0
>         zicbop                                  1.0
>
> This patch assumes that the supported extensions with the same versions
> are listed together.
>
> For example
> static struct riscv_supported_ext riscv_supported_std_ext[] =
> {
>   ...
>   {"i",         ISA_SPEC_CLASS_20191213,        2, 1, 0 },
>   {"i",         ISA_SPEC_CLASS_20190608,        2, 1, 0 },
>   {"i",         ISA_SPEC_CLASS_2P2,             2, 0, 0 },
>   ...
> };
>
> For the "i" extension, 2.1.0 with different spec class are listed together.
> This patch records the previous printed extension and version.  If the
> current extension and version are the same as the previous one, skip
> printing.
> ---
>  bfd/ChangeLog         |  9 ++++++
>  bfd/elfxx-riscv.c     | 64 +++++++++++++++++++++++++++++++++++++++++++
>  bfd/elfxx-riscv.h     |  3 ++
>  gas/ChangeLog         |  4 +++
>  gas/config/tc-riscv.c |  6 ++++
>  5 files changed, 86 insertions(+)
>
> diff --git a/bfd/ChangeLog b/bfd/ChangeLog
> index 97d0c585a56..66572927998 100644
> --- a/bfd/ChangeLog
> +++ b/bfd/ChangeLog
> @@ -1,3 +1,12 @@
> +2024-02-21 Hau Hsu  <hau.hsu@sifive.com>
> +
> +       * elfxx-riscv.h (riscv_print_extensions): New declaration.
> +       * elfxx-riscv.c (riscv_print_extensions): New function. Print
> +       available extensions and versions.
> +       (riscv_same_extension_version): New function.
> +       (riscv_same_extension_diff_version): New function.
> +       (riscv_valid_ext): New function.
> +
>  2024-01-15  Nick Clifton  <nickc@redhat.com>
>
>         * 2.42 branch point.
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index 9a121b47121..108e26d5b30 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -2051,6 +2051,70 @@ riscv_set_default_arch (riscv_parse_subset_t *rps)
>      }
>  }
>
> +static
> +bool riscv_same_extension_version(
> +  const struct riscv_supported_ext* ext1,
> +  const struct riscv_supported_ext* ext2)
> +{
> +  return (strcmp(ext1->name, ext2->name) == 0
> +          && ext1->major_version == ext2->major_version
> +          && ext1->minor_version == ext2->minor_version);
> +}
> +
> +static
> +bool riscv_same_extension_diff_version(
> +  const struct riscv_supported_ext* ext1,
> +  const struct riscv_supported_ext* ext2)
> +{
> +  return (strcmp(ext1->name, ext2->name) == 0
> +          && !(ext1->major_version == ext2->major_version
> +               && ext1->minor_version == ext2->minor_version));
> +}
> +
> +static
> +bool riscv_valid_ext(const struct riscv_supported_ext *ext)
> +{
> +  return (ext->isa_spec_class != ISA_SPEC_CLASS_NONE
> +          && ext->major_version != RISCV_UNKNOWN_VERSION
> +          && ext->minor_version != RISCV_UNKNOWN_VERSION);
> +}
> +
> +void riscv_print_extensions(void)
> +{
> +  /* Record the previous pritned extension.
> +     Print the current one if they are not the same.  */
> +  const struct riscv_supported_ext *cur = NULL, *prev = NULL;
> +
> +  int i, j;
> +  printf ("All available -march extensions for RISC-V:");
> +  for (i = 0; riscv_all_supported_ext[i] != NULL; i++)
> +    {
> +      const struct riscv_supported_ext *exts = riscv_all_supported_ext[i];
> +      prev = NULL;
> +      for (j = 0; exts[j].name != NULL; j++)
> +        {
> +          cur = &exts[j];
> +          if (!riscv_valid_ext (cur))
> +            continue;
> +
> +          if (prev && riscv_same_extension_version (prev, cur))
> +            continue;
> +
> +          if (!prev || !riscv_same_extension_diff_version (prev, cur))
> +            {
> +              printf("\n\t%-40s%d.%d", cur->name, cur->major_version, cur->minor_version);
> +              prev = &exts[j];
> +            }
> +          else
> +            {
> +              printf(", %d.%d", cur->major_version, cur->minor_version);
> +              prev = &exts[j];
> +            }
> +        }
> +    }
> +  printf ("\n");
> +}
> +
>  /* Function for parsing ISA string.
>
>     Return Value:
> diff --git a/bfd/elfxx-riscv.h b/bfd/elfxx-riscv.h
> index ae4cbee7bc3..f3710ec7fab 100644
> --- a/bfd/elfxx-riscv.h
> +++ b/bfd/elfxx-riscv.h
> @@ -121,6 +121,9 @@ riscv_multi_subset_supports (riscv_parse_subset_t *, enum riscv_insn_class);
>  extern const char *
>  riscv_multi_subset_supports_ext (riscv_parse_subset_t *, enum riscv_insn_class);
>
> +extern void
> +riscv_print_extensions(void);
> +
>  extern void
>  bfd_elf32_riscv_set_data_segment_info (struct bfd_link_info *, int *);
>  extern void
> diff --git a/gas/ChangeLog b/gas/ChangeLog
> index 88e61083c44..cebd9d94ae5 100644
> --- a/gas/ChangeLog
> +++ b/gas/ChangeLog
> @@ -1,3 +1,7 @@
> +2024-02-21 Hau Hsu  <hau.hsu@sifive.com>
> +       * gas/config/tc-riscv.c (md_parse_option): Parse 'help' keyword in
> +       march to print available extensions and versions.
> +
>  2024-02-19 Will Hawkins  <hawkinsw@obs.cr>
>
>         * config/tc-bpf.c (parse_expression): Change switch to if so that
> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> index a4161420128..e0910f59157 100644
> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -4034,6 +4034,12 @@ md_parse_option (int c, const char *arg)
>    switch (c)
>      {
>      case OPTION_MARCH:
> +      /* List all avaiable archs. */
> +      if (strcmp (arg, "help") == 0)
> +        {
> +          riscv_print_extensions();
> +          exit (EXIT_SUCCESS);
> +        }
>        default_arch_with_ext = arg;
>        break;
>
> --
> 2.31.1
>

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

* Re: [PATCH 1/1] RISC-V: Add --march=help
  2024-02-23  4:25   ` Kito Cheng
@ 2024-02-23  4:31     ` Hau Hsu
  0 siblings, 0 replies; 4+ messages in thread
From: Hau Hsu @ 2024-02-23  4:31 UTC (permalink / raw)
  To: Kito Cheng; +Cc: Nelson Chu, binutils

Oh I forgot to change title. There should be only one dash (-march=help) instead of two …
Let me send another patch later.

> Kito Cheng <kito.cheng@gmail.com> 於 2024年2月23日 中午12:25 寫道:
> 
> LGTM, and gcc have landed[1] the same option as well :)
> 
> [1] https://github.com/gcc-mirror/gcc/commit/7af0f1e107a480fbfe882cb985603960114aefb5
> 
> On Wed, Feb 21, 2024 at 11:38 AM Hau Hsu <hau.hsu@sifive.com> wrote:
>> 
>> Use --march=help to print all supported extensions and versions.
>> 
>> Here is part of the output of `as -march=help`:
>> All available -march extensions for RISC-V:
>>        e                                       1.9
>>        i                                       2.1, 2.0
>>        m                                       2.0
>>        a                                       2.1, 2.0
>>        f                                       2.2, 2.0
>>        d                                       2.2, 2.0
>>        q                                       2.2, 2.0
>>        c                                       2.0
>>        v                                       1.0
>>        h                                       1.0
>>        zicbom                                  1.0
>>        zicbop                                  1.0
>> 
>> This patch assumes that the supported extensions with the same versions
>> are listed together.
>> 
>> For example
>> static struct riscv_supported_ext riscv_supported_std_ext[] =
>> {
>>  ...
>>  {"i",         ISA_SPEC_CLASS_20191213,        2, 1, 0 },
>>  {"i",         ISA_SPEC_CLASS_20190608,        2, 1, 0 },
>>  {"i",         ISA_SPEC_CLASS_2P2,             2, 0, 0 },
>>  ...
>> };
>> 
>> For the "i" extension, 2.1.0 with different spec class are listed together.
>> This patch records the previous printed extension and version.  If the
>> current extension and version are the same as the previous one, skip
>> printing.
>> ---
>> bfd/ChangeLog         |  9 ++++++
>> bfd/elfxx-riscv.c     | 64 +++++++++++++++++++++++++++++++++++++++++++
>> bfd/elfxx-riscv.h     |  3 ++
>> gas/ChangeLog         |  4 +++
>> gas/config/tc-riscv.c |  6 ++++
>> 5 files changed, 86 insertions(+)
>> 
>> diff --git a/bfd/ChangeLog b/bfd/ChangeLog
>> index 97d0c585a56..66572927998 100644
>> --- a/bfd/ChangeLog
>> +++ b/bfd/ChangeLog
>> @@ -1,3 +1,12 @@
>> +2024-02-21 Hau Hsu  <hau.hsu@sifive.com>
>> +
>> +       * elfxx-riscv.h (riscv_print_extensions): New declaration.
>> +       * elfxx-riscv.c (riscv_print_extensions): New function. Print
>> +       available extensions and versions.
>> +       (riscv_same_extension_version): New function.
>> +       (riscv_same_extension_diff_version): New function.
>> +       (riscv_valid_ext): New function.
>> +
>> 2024-01-15  Nick Clifton  <nickc@redhat.com>
>> 
>>        * 2.42 branch point.
>> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
>> index 9a121b47121..108e26d5b30 100644
>> --- a/bfd/elfxx-riscv.c
>> +++ b/bfd/elfxx-riscv.c
>> @@ -2051,6 +2051,70 @@ riscv_set_default_arch (riscv_parse_subset_t *rps)
>>     }
>> }
>> 
>> +static
>> +bool riscv_same_extension_version(
>> +  const struct riscv_supported_ext* ext1,
>> +  const struct riscv_supported_ext* ext2)
>> +{
>> +  return (strcmp(ext1->name, ext2->name) == 0
>> +          && ext1->major_version == ext2->major_version
>> +          && ext1->minor_version == ext2->minor_version);
>> +}
>> +
>> +static
>> +bool riscv_same_extension_diff_version(
>> +  const struct riscv_supported_ext* ext1,
>> +  const struct riscv_supported_ext* ext2)
>> +{
>> +  return (strcmp(ext1->name, ext2->name) == 0
>> +          && !(ext1->major_version == ext2->major_version
>> +               && ext1->minor_version == ext2->minor_version));
>> +}
>> +
>> +static
>> +bool riscv_valid_ext(const struct riscv_supported_ext *ext)
>> +{
>> +  return (ext->isa_spec_class != ISA_SPEC_CLASS_NONE
>> +          && ext->major_version != RISCV_UNKNOWN_VERSION
>> +          && ext->minor_version != RISCV_UNKNOWN_VERSION);
>> +}
>> +
>> +void riscv_print_extensions(void)
>> +{
>> +  /* Record the previous pritned extension.
>> +     Print the current one if they are not the same.  */
>> +  const struct riscv_supported_ext *cur = NULL, *prev = NULL;
>> +
>> +  int i, j;
>> +  printf ("All available -march extensions for RISC-V:");
>> +  for (i = 0; riscv_all_supported_ext[i] != NULL; i++)
>> +    {
>> +      const struct riscv_supported_ext *exts = riscv_all_supported_ext[i];
>> +      prev = NULL;
>> +      for (j = 0; exts[j].name != NULL; j++)
>> +        {
>> +          cur = &exts[j];
>> +          if (!riscv_valid_ext (cur))
>> +            continue;
>> +
>> +          if (prev && riscv_same_extension_version (prev, cur))
>> +            continue;
>> +
>> +          if (!prev || !riscv_same_extension_diff_version (prev, cur))
>> +            {
>> +              printf("\n\t%-40s%d.%d", cur->name, cur->major_version, cur->minor_version);
>> +              prev = &exts[j];
>> +            }
>> +          else
>> +            {
>> +              printf(", %d.%d", cur->major_version, cur->minor_version);
>> +              prev = &exts[j];
>> +            }
>> +        }
>> +    }
>> +  printf ("\n");
>> +}
>> +
>> /* Function for parsing ISA string.
>> 
>>    Return Value:
>> diff --git a/bfd/elfxx-riscv.h b/bfd/elfxx-riscv.h
>> index ae4cbee7bc3..f3710ec7fab 100644
>> --- a/bfd/elfxx-riscv.h
>> +++ b/bfd/elfxx-riscv.h
>> @@ -121,6 +121,9 @@ riscv_multi_subset_supports (riscv_parse_subset_t *, enum riscv_insn_class);
>> extern const char *
>> riscv_multi_subset_supports_ext (riscv_parse_subset_t *, enum riscv_insn_class);
>> 
>> +extern void
>> +riscv_print_extensions(void);
>> +
>> extern void
>> bfd_elf32_riscv_set_data_segment_info (struct bfd_link_info *, int *);
>> extern void
>> diff --git a/gas/ChangeLog b/gas/ChangeLog
>> index 88e61083c44..cebd9d94ae5 100644
>> --- a/gas/ChangeLog
>> +++ b/gas/ChangeLog
>> @@ -1,3 +1,7 @@
>> +2024-02-21 Hau Hsu  <hau.hsu@sifive.com>
>> +       * gas/config/tc-riscv.c (md_parse_option): Parse 'help' keyword in
>> +       march to print available extensions and versions.
>> +
>> 2024-02-19 Will Hawkins  <hawkinsw@obs.cr>
>> 
>>        * config/tc-bpf.c (parse_expression): Change switch to if so that
>> diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
>> index a4161420128..e0910f59157 100644
>> --- a/gas/config/tc-riscv.c
>> +++ b/gas/config/tc-riscv.c
>> @@ -4034,6 +4034,12 @@ md_parse_option (int c, const char *arg)
>>   switch (c)
>>     {
>>     case OPTION_MARCH:
>> +      /* List all avaiable archs. */
>> +      if (strcmp (arg, "help") == 0)
>> +        {
>> +          riscv_print_extensions();
>> +          exit (EXIT_SUCCESS);
>> +        }
>>       default_arch_with_ext = arg;
>>       break;
>> 
>> --
>> 2.31.1
>> 


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

end of thread, other threads:[~2024-02-23  4:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-21  3:37 [PATCH 0/1] RISC-V: Add --march=help to print supported extensions and versions Hau Hsu
2024-02-21  3:37 ` [PATCH 1/1] RISC-V: Add --march=help Hau Hsu
2024-02-23  4:25   ` Kito Cheng
2024-02-23  4:31     ` Hau Hsu

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).