On 11/18/22 05:15, Shahab Vahedi wrote:
While porting ARCv2 to elfutils [1], it was brought up that the
necessary changes to the project's libelf/elf.h must come from
glibc, because they sync it from glibc [2].  Therefore, this patch
is to update ARC entries in elf/elf.h.

The majority of the update is about adding new definitions,
specially for the relocations.  However, there is one rename, one
deletion, and one change:

For completeness: And some cosmetic changes to uppercase hex digits.


- R_ARC_JUMP_SLOT renamed to R_ARC_JMP_SLOT to match binutils.
- R_ARC_B26 removed because it is unused and deprecated.
- R_ARC_TLS_DTPOFF_S9 changed from 0x4a to the correct value 0x49.

Technically this would be an ABI change, but is currently not being used in glibc at all (and I doubt anything outside glibc would use it anyways) so this should be non-controversial.

[1]
https://sourceware.org/pipermail/elfutils-devel/2022q4/005530.html

[2]
https://sourceware.org/pipermail/elfutils-devel/2022q4/005548.html

Signed-off-by: Shahab Vahedi <sha...@synopsys.com>
---
  elf/elf.h | 30 +++++++++++++++++++++++++-----
  1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/elf/elf.h b/elf/elf.h
index 920e6891e6..dfe5f79036 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -4160,13 +4160,23 @@ enum
  #define R_LARCH_GNU_VTENTRY  58
+/* ARC specific declarations. */
+
+/* Processor specific flags for the Ehdr e_flags field.  */
+#define EF_ARC_MACH_MSK            0x000000ff
+#define EF_ARC_OSABI_MSK    0x00000f00
+#define EF_ARC_ALL_MSK     (EF_ARC_MACH_MSK | EF_ARC_OSABI_MSK)
+
+/* Processor specific values for the Shdr sh_type field.  */
+#define SHT_ARC_ATTRIBUTES     (SHT_LOPROC + 1) /* ARC attributes section.  */
+
  /* ARCompact/ARCv2 specific relocs.  */
  #define R_ARC_NONE            0x0
  #define R_ARC_8                       0x1
  #define R_ARC_16              0x2
  #define R_ARC_24              0x3
  #define R_ARC_32              0x4
-#define R_ARC_B26              0x5
+
  #define R_ARC_B22_PCREL               0x6
  #define R_ARC_H30             0x7
  #define R_ARC_N8              0x8
@@ -4206,16 +4216,23 @@ enum
  #define R_ARC_SECTOFF_ME_2    0x2A
  #define R_ARC_SECTOFF_1               0x2B
  #define R_ARC_SECTOFF_2               0x2C
+#define R_ARC_SDA_12           0x2D
+#define R_ARC_SDA16_ST2                0x30
+#define R_ARC_32_PCREL         0x31

OK.

  #define R_ARC_PC32            0x32
  #define R_ARC_GOTPC32         0x33
  #define R_ARC_PLT32           0x34
  #define R_ARC_COPY            0x35
  #define R_ARC_GLOB_DAT                0x36
-#define R_ARC_JUMP_SLOT                0x37
+#define R_ARC_JMP_SLOT         0x37

Did you build glibc with this change ? There are references to old definition.

git grep R_ARC_JUMP_SLOT

sysdeps/arc/dl-machine.h:199:  ((((type) == R_ARC_JUMP_SLOT                                     \
sysdeps/arc/dl-machine.h:206:#define ELF_MACHINE_JMP_SLOT R_ARC_JUMP_SLOT
sysdeps/arc/dl-machine.h:277:        case R_ARC_JUMP_SLOT:
sysdeps/arc/dl-machine.h:337:  if (r_type == R_ARC_JUMP_SLOT)



  #define R_ARC_RELATIVE                0x38
  #define R_ARC_GOTOFF          0x39
  #define R_ARC_GOTPC           0x3A
  #define R_ARC_GOT32           0x3B
+#define R_ARC_S21W_PCREL_PLT   0x3C
+#define R_ARC_S25H_PCREL_PLT   0x3D
+
+#define R_ARC_JLI_SECTOFF      0x3F

OK.

  #define R_ARC_TLS_DTPMOD      0x42
  #define R_ARC_TLS_DTPOFF      0x43
@@ -4224,9 +4241,12 @@ enum
  #define R_ARC_TLS_GD_LD               0x46
  #define R_ARC_TLS_GD_CALL     0x47
  #define R_ARC_TLS_IE_GOT      0x48
-#define R_ARC_TLS_DTPOFF_S9    0x4a
-#define R_ARC_TLS_LE_S9                0x4a
-#define R_ARC_TLS_LE_32                0x4b
+#define R_ARC_TLS_DTPOFF_S9    0x49

Value change, but not used currently so no ABI implications.

+#define R_ARC_TLS_LE_S9                0x4A

cosmetic. OK

+#define R_ARC_TLS_LE_32                0x4B

Ditto.

+#define R_ARC_S25W_PCREL_PLT   0x4C
+#define R_ARC_S21H_PCREL_PLT   0x4D
+#define R_ARC_NPS_CMEM16       0x4E

OK.


_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

Reply via email to