Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Jul 2019 13:22:33 -0400
From:      Mitchell Horne <mhorne063@gmail.com>
To:        Mitchell Horne <mhorne@freebsd.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org,  svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   Re: svn commit: r349736 - in stable/12/contrib/elftoolchain: common readelf
Message-ID:  <CADeAsy0KEW-p2=cg8d-Gsqhb-ua=c%2Bjr5PEXBXdg9Z4nm%2Bz5ow@mail.gmail.com>
In-Reply-To: <201907041717.x64HH1de053121@repo.freebsd.org>
References:  <201907041717.x64HH1de053121@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jul 4, 2019 at 1:17 PM Mitchell Horne <mhorne@freebsd.org> wrote:
>
> Author: mhorne
> Date: Thu Jul  4 17:17:00 2019
> New Revision: 349736
> URL: https://svnweb.freebsd.org/changeset/base/349736
>
> Log:
>   MFC r349482,r349563:

Apologies, this should read r349482,r349562. The svn mergeinfo is
correct however.


>   readelf: Add support for RISC-V specific e_flags
>
>   Approved by:  markj (mentor, implicit)
>
> Modified:
>   stable/12/contrib/elftoolchain/common/elfdefinitions.h
>   stable/12/contrib/elftoolchain/readelf/readelf.c
> Directory Properties:
>   stable/12/   (props changed)
>
> Modified: stable/12/contrib/elftoolchain/common/elfdefinitions.h
> ==============================================================================
> --- stable/12/contrib/elftoolchain/common/elfdefinitions.h      Thu Jul  4 17:15:36 2019        (r349735)
> +++ stable/12/contrib/elftoolchain/common/elfdefinitions.h      Thu Jul  4 17:17:00 2019        (r349736)
> @@ -33,7 +33,7 @@
>   *   See: http://www.sco.com/developers/gabi/latest/ch4.intro.html
>   * - The May 1998 (version 1.5) draft of "The ELF-64 object format".
>   * - Processor-specific ELF ABI definitions for sparc, i386, amd64, mips,
> - *   ia64, and powerpc processors.
> + *   ia64, powerpc, and RISC-V processors.
>   * - The "Linkers and Libraries Guide", from Sun Microsystems.
>   */
>
> @@ -426,6 +426,22 @@ _ELF_DEFINE_EF(EF_PPC_RELOCATABLE,  0x00010000UL,                  \
>         "-mrelocatable flag")                                           \
>  _ELF_DEFINE_EF(EF_PPC_RELOCATABLE_LIB, 0x00008000UL,                   \
>         "-mrelocatable-lib flag")                                       \
> +_ELF_DEFINE_EF(EF_RISCV_RVC,       0x00000001UL,                       \
> +       "Compressed instruction extension")                             \
> +_ELF_DEFINE_EF(EF_RISCV_FLOAT_ABI_MASK, 0x00000006UL,                  \
> +       "Floating point ABI")                                           \
> +_ELF_DEFINE_EF(EF_RISCV_FLOAT_ABI_SOFT, 0x00000000UL,                  \
> +       "Software emulated floating point")                             \
> +_ELF_DEFINE_EF(EF_RISCV_FLOAT_ABI_SINGLE, 0x00000002UL,                        \
> +       "Single precision floating point")                              \
> +_ELF_DEFINE_EF(EF_RISCV_FLOAT_ABI_DOUBLE, 0x00000004UL,                        \
> +       "Double precision floating point")                              \
> +_ELF_DEFINE_EF(EF_RISCV_FLOAT_ABI_QUAD, 0x00000006UL,                  \
> +       "Quad precision floating point")                                \
> +_ELF_DEFINE_EF(EF_RISCV_RVE,       0x00000008UL,                       \
> +       "RV32E embedded ABI")                                           \
> +_ELF_DEFINE_EF(EF_RISCV_TSO,       0x00000010UL,                       \
> +       "RVTSO memory consistency model")                               \
>  _ELF_DEFINE_EF(EF_SPARC_EXT_MASK,   0x00ffff00UL,                      \
>         "Vendor Extension mask")                                        \
>  _ELF_DEFINE_EF(EF_SPARC_32PLUS,     0x00000100UL,                      \
>
> Modified: stable/12/contrib/elftoolchain/readelf/readelf.c
> ==============================================================================
> --- stable/12/contrib/elftoolchain/readelf/readelf.c    Thu Jul  4 17:15:36 2019        (r349735)
> +++ stable/12/contrib/elftoolchain/readelf/readelf.c    Thu Jul  4 17:17:00 2019        (r349736)
> @@ -420,6 +420,13 @@ static struct eflags_desc powerpc_eflags_desc[] = {
>         {0, NULL}
>  };
>
> +static struct eflags_desc riscv_eflags_desc[] = {
> +       {EF_RISCV_RVC, "RVC"},
> +       {EF_RISCV_RVE, "RVE"},
> +       {EF_RISCV_TSO, "TSO"},
> +       {0, NULL}
> +};
> +
>  static struct eflags_desc sparc_eflags_desc[] = {
>         {EF_SPARC_32PLUS, "v8+"},
>         {EF_SPARC_SUN_US1, "ultrasparcI"},
> @@ -2279,6 +2286,23 @@ dump_eflags(struct readelf *re, uint64_t e_flags)
>         case EM_PPC:
>         case EM_PPC64:
>                 edesc = powerpc_eflags_desc;
> +               break;
> +       case EM_RISCV:
> +               switch (e_flags & EF_RISCV_FLOAT_ABI_MASK) {
> +               case EF_RISCV_FLOAT_ABI_SOFT:
> +                       printf(", soft-float ABI");
> +                       break;
> +               case EF_RISCV_FLOAT_ABI_SINGLE:
> +                       printf(", single-float ABI");
> +                       break;
> +               case EF_RISCV_FLOAT_ABI_DOUBLE:
> +                       printf(", double-float ABI");
> +                       break;
> +               case EF_RISCV_FLOAT_ABI_QUAD:
> +                       printf(", quad-float ABI");
> +                       break;
> +               }
> +               edesc = riscv_eflags_desc;
>                 break;
>         case EM_SPARC:
>         case EM_SPARC32PLUS:
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADeAsy0KEW-p2=cg8d-Gsqhb-ua=c%2Bjr5PEXBXdg9Z4nm%2Bz5ow>