[v4,03/17] Add support for the RISC-V-specific ELF flags
Commit Message
The RISC-V port defines ELF flags that enforce compatibility between
various objects. This adds the shared support necessary for these
flags.
2018-01-13 Palmer Dabbelt <palmer@sifive.com>
* elf/cache.c (print_entry): Add FLAG_RISCV_FLOAT_ABI_SOFT and
FLAG_RISCV_FLOAT_ABI_DOUBLE.
* elf/elf.h (EF_RISCV_RVC): New define.
(EF_RISCV_FLOAT_ABI): Likewise.
(EF_RISCV_FLOAT_ABI_SOFT): Likewise.
(EF_RISCV_FLOAT_ABI_SINGLE): Likewise.
(EF_RISCV_FLOAT_ABI_DOUBLE): Likewise.
(EF_RISCV_FLOAT_ABI_QUAD): Likewise.
* sysdeps/generic/ldconfig.h (FLAG_RISCV_FLOAT_ABI_SOFT): New
define.
(FLAG_RISCV_FLOAT_ABI_DOUBLE): Likewise.
---
elf/cache.c | 4 ++++
elf/elf.h | 8 ++++++++
sysdeps/generic/ldconfig.h | 2 ++
3 files changed, 14 insertions(+)
Comments
On Sat, 13 Jan 2018, Palmer Dabbelt wrote:
> diff --git a/elf/cache.c b/elf/cache.c
> index 1ec6ab36e7f7..1202c215016a 100644
> --- a/elf/cache.c
> +++ b/elf/cache.c
> @@ -114,6 +114,10 @@ print_entry (const char *lib, int flag, unsigned int osversion,
> case FLAG_MIPS64_LIBN64_NAN2008:
> fputs (",64bit,nan2008", stdout);
> break;
> + case FLAG_RISCV_FLOAT_ABI_SOFT:
> + fputs (",soft-float", stdout);
> + case FLAG_RISCV_FLOAT_ABI_DOUBLE:
> + fputs (",soft-float", stdout);
The latter description seems incorrect.
On Mon, 15 Jan 2018 08:45:52 PST (-0800), joseph@codesourcery.com wrote:
> On Sat, 13 Jan 2018, Palmer Dabbelt wrote:
>
>> diff --git a/elf/cache.c b/elf/cache.c
>> index 1ec6ab36e7f7..1202c215016a 100644
>> --- a/elf/cache.c
>> +++ b/elf/cache.c
>> @@ -114,6 +114,10 @@ print_entry (const char *lib, int flag, unsigned int osversion,
>> case FLAG_MIPS64_LIBN64_NAN2008:
>> fputs (",64bit,nan2008", stdout);
>> break;
>> + case FLAG_RISCV_FLOAT_ABI_SOFT:
>> + fputs (",soft-float", stdout);
>> + case FLAG_RISCV_FLOAT_ABI_DOUBLE:
>> + fputs (",soft-float", stdout);
>
> The latter description seems incorrect.
Sorry about that, I was up a bit too late. It's been fixed.
Thanks!
@@ -114,6 +114,10 @@ print_entry (const char *lib, int flag, unsigned int osversion,
case FLAG_MIPS64_LIBN64_NAN2008:
fputs (",64bit,nan2008", stdout);
break;
+ case FLAG_RISCV_FLOAT_ABI_SOFT:
+ fputs (",soft-float", stdout);
+ case FLAG_RISCV_FLOAT_ABI_DOUBLE:
+ fputs (",soft-float", stdout);
case 0:
break;
default:
@@ -3762,6 +3762,14 @@ enum
#define R_TILEGX_NUM 130
+/* RISC-V ELF Flags */
+#define EF_RISCV_RVC 0x0001
+#define EF_RISCV_FLOAT_ABI 0x0006
+#define EF_RISCV_FLOAT_ABI_SOFT 0x0000
+#define EF_RISCV_FLOAT_ABI_SINGLE 0x0002
+#define EF_RISCV_FLOAT_ABI_DOUBLE 0x0004
+#define EF_RISCV_FLOAT_ABI_QUAD 0x0006
+
/* RISC-V relocations. */
#define R_RISCV_NONE 0
#define R_RISCV_32 1
@@ -42,6 +42,8 @@
#define FLAG_MIPS_LIB32_NAN2008 0x0c00
#define FLAG_MIPS64_LIBN32_NAN2008 0x0d00
#define FLAG_MIPS64_LIBN64_NAN2008 0x0e00
+#define FLAG_RISCV_FLOAT_ABI_SOFT 0x0f00
+#define FLAG_RISCV_FLOAT_ABI_DOUBLE 0x1000
/* Name of auxiliary cache. */
#define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"