RISC-V: add remaining relocations

Message ID mvmpo3we433.fsf@suse.de
State Committed
Commit 3dfd23eb4bdc7707048b115548e2238dacef064e
Headers

Commit Message

Andreas Schwab March 22, 2018, 11:34 a.m. UTC
  <elf.h> is supposed to be as complete as possible.

Andreas.

	* elf/elf.h (R_RISCV_BRANCH, R_RISCV_JAL, R_RISCV_CALL)
	(R_RISCV_CALL_PLT, R_RISCV_GOT_HI20, R_RISCV_TLS_GOT_HI20)
	(R_RISCV_TLS_GD_HI20, R_RISCV_PCREL_HI20, R_RISCV_PCREL_LO12_I)
	(R_RISCV_PCREL_LO12_S, R_RISCV_HI20, R_RISCV_LO12_I)
	(R_RISCV_LO12_S, R_RISCV_TPREL_HI20, R_RISCV_TPREL_LO12_I)
	(R_RISCV_TPREL_LO12_S, R_RISCV_TPREL_ADD, R_RISCV_ADD8)
	(R_RISCV_ADD16, R_RISCV_ADD32, R_RISCV_ADD64, R_RISCV_SUB8)
	(R_RISCV_SUB16, R_RISCV_SUB32, R_RISCV_SUB64)
	(R_RISCV_GNU_VTINHERIT, R_RISCV_GNU_VTENTRY, R_RISCV_ALIGN)
	(R_RISCV_RVC_BRANCH, R_RISCV_RVC_JUMP, R_RISCV_RVC_LUI)
	(R_RISCV_GPREL_I, R_RISCV_GPREL_S, R_RISCV_TPREL_I)
	(R_RISCV_TPREL_S, R_RISCV_RELAX, R_RISCV_SUB6, R_RISCV_SET6)
	(R_RISCV_SET8, R_RISCV_SET16, R_RISCV_SET32, R_RISCV_32_PCREL)
	(R_RISCV_NUM): Define.
---
 elf/elf.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 56 insertions(+), 12 deletions(-)
  

Comments

Palmer Dabbelt March 22, 2018, 5:43 p.m. UTC | #1
On Thu, 22 Mar 2018 04:34:40 PDT (-0700), schwab@suse.de wrote:
> <elf.h> is supposed to be as complete as possible.
>
> Andreas.
>
> 	* elf/elf.h (R_RISCV_BRANCH, R_RISCV_JAL, R_RISCV_CALL)
> 	(R_RISCV_CALL_PLT, R_RISCV_GOT_HI20, R_RISCV_TLS_GOT_HI20)
> 	(R_RISCV_TLS_GD_HI20, R_RISCV_PCREL_HI20, R_RISCV_PCREL_LO12_I)
> 	(R_RISCV_PCREL_LO12_S, R_RISCV_HI20, R_RISCV_LO12_I)
> 	(R_RISCV_LO12_S, R_RISCV_TPREL_HI20, R_RISCV_TPREL_LO12_I)
> 	(R_RISCV_TPREL_LO12_S, R_RISCV_TPREL_ADD, R_RISCV_ADD8)
> 	(R_RISCV_ADD16, R_RISCV_ADD32, R_RISCV_ADD64, R_RISCV_SUB8)
> 	(R_RISCV_SUB16, R_RISCV_SUB32, R_RISCV_SUB64)
> 	(R_RISCV_GNU_VTINHERIT, R_RISCV_GNU_VTENTRY, R_RISCV_ALIGN)
> 	(R_RISCV_RVC_BRANCH, R_RISCV_RVC_JUMP, R_RISCV_RVC_LUI)
> 	(R_RISCV_GPREL_I, R_RISCV_GPREL_S, R_RISCV_TPREL_I)
> 	(R_RISCV_TPREL_S, R_RISCV_RELAX, R_RISCV_SUB6, R_RISCV_SET6)
> 	(R_RISCV_SET8, R_RISCV_SET16, R_RISCV_SET32, R_RISCV_32_PCREL)
> 	(R_RISCV_NUM): Define.
> ---
>  elf/elf.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 56 insertions(+), 12 deletions(-)
>
> diff --git a/elf/elf.h b/elf/elf.h
> index 677fccb555..f7748983c8 100644
> --- a/elf/elf.h
> +++ b/elf/elf.h
> @@ -3788,18 +3788,62 @@ enum
>  #define EF_RISCV_FLOAT_ABI_QUAD 	0x0006
>
>  /* RISC-V relocations.  */
> -#define R_RISCV_NONE          0
> -#define R_RISCV_32            1
> -#define R_RISCV_64            2
> -#define R_RISCV_RELATIVE      3
> -#define R_RISCV_COPY          4
> -#define R_RISCV_JUMP_SLOT     5
> -#define R_RISCV_TLS_DTPMOD32  6
> -#define R_RISCV_TLS_DTPMOD64  7
> -#define R_RISCV_TLS_DTPREL32  8
> -#define R_RISCV_TLS_DTPREL64  9
> -#define R_RISCV_TLS_TPREL32  10
> -#define R_RISCV_TLS_TPREL64  11
> +#define R_RISCV_NONE		 0
> +#define R_RISCV_32		 1
> +#define R_RISCV_64		 2
> +#define R_RISCV_RELATIVE	 3
> +#define R_RISCV_COPY		 4
> +#define R_RISCV_JUMP_SLOT	 5
> +#define R_RISCV_TLS_DTPMOD32	 6
> +#define R_RISCV_TLS_DTPMOD64	 7
> +#define R_RISCV_TLS_DTPREL32	 8
> +#define R_RISCV_TLS_DTPREL64	 9
> +#define R_RISCV_TLS_TPREL32	10
> +#define R_RISCV_TLS_TPREL64	11
> +#define R_RISCV_BRANCH		16
> +#define R_RISCV_JAL		17
> +#define R_RISCV_CALL		18
> +#define R_RISCV_CALL_PLT	19
> +#define R_RISCV_GOT_HI20	20
> +#define R_RISCV_TLS_GOT_HI20	21
> +#define R_RISCV_TLS_GD_HI20	22
> +#define R_RISCV_PCREL_HI20	23
> +#define R_RISCV_PCREL_LO12_I	24
> +#define R_RISCV_PCREL_LO12_S	25
> +#define R_RISCV_HI20		26
> +#define R_RISCV_LO12_I		27
> +#define R_RISCV_LO12_S		28
> +#define R_RISCV_TPREL_HI20	29
> +#define R_RISCV_TPREL_LO12_I	30
> +#define R_RISCV_TPREL_LO12_S	31
> +#define R_RISCV_TPREL_ADD	32
> +#define R_RISCV_ADD8		33
> +#define R_RISCV_ADD16		34
> +#define R_RISCV_ADD32		35
> +#define R_RISCV_ADD64		36
> +#define R_RISCV_SUB8		37
> +#define R_RISCV_SUB16		38
> +#define R_RISCV_SUB32		39
> +#define R_RISCV_SUB64		40
> +#define R_RISCV_GNU_VTINHERIT	41
> +#define R_RISCV_GNU_VTENTRY	42
> +#define R_RISCV_ALIGN		43
> +#define R_RISCV_RVC_BRANCH	44
> +#define R_RISCV_RVC_JUMP	45
> +#define R_RISCV_RVC_LUI		46
> +#define R_RISCV_GPREL_I		47
> +#define R_RISCV_GPREL_S		48
> +#define R_RISCV_TPREL_I		49
> +#define R_RISCV_TPREL_S		50
> +#define R_RISCV_RELAX		51
> +#define R_RISCV_SUB6		52
> +#define R_RISCV_SET6		53
> +#define R_RISCV_SET8		54
> +#define R_RISCV_SET16		55
> +#define R_RISCV_SET32		56
> +#define R_RISCV_32_PCREL	57
> +
> +#define R_RISCV_NUM		58
>
>  /* BPF specific declarations.  */

This looks good to me, I guess we just had the dynamic relocations in our glibc
port as they're the only ones that show up, but these are all set in the ABI so
it seems sane to expose them.

If there's no other comments then I'll commit it.

Thanks!
  

Patch

diff --git a/elf/elf.h b/elf/elf.h
index 677fccb555..f7748983c8 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -3788,18 +3788,62 @@  enum
 #define EF_RISCV_FLOAT_ABI_QUAD 	0x0006
 
 /* RISC-V relocations.  */
-#define R_RISCV_NONE          0
-#define R_RISCV_32            1
-#define R_RISCV_64            2
-#define R_RISCV_RELATIVE      3
-#define R_RISCV_COPY          4
-#define R_RISCV_JUMP_SLOT     5
-#define R_RISCV_TLS_DTPMOD32  6
-#define R_RISCV_TLS_DTPMOD64  7
-#define R_RISCV_TLS_DTPREL32  8
-#define R_RISCV_TLS_DTPREL64  9
-#define R_RISCV_TLS_TPREL32  10
-#define R_RISCV_TLS_TPREL64  11
+#define R_RISCV_NONE		 0
+#define R_RISCV_32		 1
+#define R_RISCV_64		 2
+#define R_RISCV_RELATIVE	 3
+#define R_RISCV_COPY		 4
+#define R_RISCV_JUMP_SLOT	 5
+#define R_RISCV_TLS_DTPMOD32	 6
+#define R_RISCV_TLS_DTPMOD64	 7
+#define R_RISCV_TLS_DTPREL32	 8
+#define R_RISCV_TLS_DTPREL64	 9
+#define R_RISCV_TLS_TPREL32	10
+#define R_RISCV_TLS_TPREL64	11
+#define R_RISCV_BRANCH		16
+#define R_RISCV_JAL		17
+#define R_RISCV_CALL		18
+#define R_RISCV_CALL_PLT	19
+#define R_RISCV_GOT_HI20	20
+#define R_RISCV_TLS_GOT_HI20	21
+#define R_RISCV_TLS_GD_HI20	22
+#define R_RISCV_PCREL_HI20	23
+#define R_RISCV_PCREL_LO12_I	24
+#define R_RISCV_PCREL_LO12_S	25
+#define R_RISCV_HI20		26
+#define R_RISCV_LO12_I		27
+#define R_RISCV_LO12_S		28
+#define R_RISCV_TPREL_HI20	29
+#define R_RISCV_TPREL_LO12_I	30
+#define R_RISCV_TPREL_LO12_S	31
+#define R_RISCV_TPREL_ADD	32
+#define R_RISCV_ADD8		33
+#define R_RISCV_ADD16		34
+#define R_RISCV_ADD32		35
+#define R_RISCV_ADD64		36
+#define R_RISCV_SUB8		37
+#define R_RISCV_SUB16		38
+#define R_RISCV_SUB32		39
+#define R_RISCV_SUB64		40
+#define R_RISCV_GNU_VTINHERIT	41
+#define R_RISCV_GNU_VTENTRY	42
+#define R_RISCV_ALIGN		43
+#define R_RISCV_RVC_BRANCH	44
+#define R_RISCV_RVC_JUMP	45
+#define R_RISCV_RVC_LUI		46
+#define R_RISCV_GPREL_I		47
+#define R_RISCV_GPREL_S		48
+#define R_RISCV_TPREL_I		49
+#define R_RISCV_TPREL_S		50
+#define R_RISCV_RELAX		51
+#define R_RISCV_SUB6		52
+#define R_RISCV_SET6		53
+#define R_RISCV_SET8		54
+#define R_RISCV_SET16		55
+#define R_RISCV_SET32		56
+#define R_RISCV_32_PCREL	57
+
+#define R_RISCV_NUM		58
 
 /* BPF specific declarations.  */