elf: Define DT_RELR related macros and types
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 29 Mar 2022 21:08:54 +0000 (14:08 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 26 Apr 2022 17:16:11 +0000 (10:16 -0700)
elf/elf.h
scripts/glibcelf.py

index 0735f6b..0195029 100644 (file)
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -443,7 +443,8 @@ typedef struct
 #define SHT_PREINIT_ARRAY 16           /* Array of pre-constructors */
 #define SHT_GROUP        17            /* Section group */
 #define SHT_SYMTAB_SHNDX  18           /* Extended section indices */
-#define        SHT_NUM           19            /* Number of defined types.  */
+#define SHT_RELR         19            /* RELR relative relocations */
+#define        SHT_NUM           20            /* Number of defined types.  */
 #define SHT_LOOS         0x60000000    /* Start OS-specific.  */
 #define SHT_GNU_ATTRIBUTES 0x6ffffff5  /* Object attributes.  */
 #define SHT_GNU_HASH     0x6ffffff6    /* GNU-style hash table.  */
@@ -662,6 +663,11 @@ typedef struct
   Elf64_Sxword r_addend;               /* Addend */
 } Elf64_Rela;
 
+/* RELR relocation table entry */
+
+typedef Elf32_Word     Elf32_Relr;
+typedef Elf64_Xword    Elf64_Relr;
+
 /* How to extract and insert information held in the r_info field.  */
 
 #define ELF32_R_SYM(val)               ((val) >> 8)
@@ -887,7 +893,10 @@ typedef struct
 #define DT_PREINIT_ARRAY 32            /* Array with addresses of preinit fct*/
 #define DT_PREINIT_ARRAYSZ 33          /* size in bytes of DT_PREINIT_ARRAY */
 #define DT_SYMTAB_SHNDX        34              /* Address of SYMTAB_SHNDX section */
-#define        DT_NUM          35              /* Number used */
+#define DT_RELRSZ      35              /* Total size of RELR relative relocations */
+#define DT_RELR                36              /* Address of RELR relative relocations */
+#define DT_RELRENT     37              /* Size of one RELR relative relocaction */
+#define        DT_NUM          38              /* Number used */
 #define DT_LOOS                0x6000000d      /* Start of OS-specific */
 #define DT_HIOS                0x6ffff000      /* End of OS-specific */
 #define DT_LOPROC      0x70000000      /* Start of processor-specific */
index da0d538..f847b36 100644 (file)
@@ -304,6 +304,7 @@ class Sht(_OpenIntEnum):
     SHT_PREINIT_ARRAY = 16
     SHT_GROUP = 17
     SHT_SYMTAB_SHNDX = 18
+    SHT_RELR = 19
     SHT_GNU_ATTRIBUTES = 0x6ffffff5
     SHT_GNU_HASH = 0x6ffffff6
     SHT_GNU_LIBLIST = 0x6ffffff7
@@ -593,6 +594,9 @@ class Dt(_OpenIntEnum):
     DT_PREINIT_ARRAY = 32
     DT_PREINIT_ARRAYSZ = 33
     DT_SYMTAB_SHNDX = 34
+    DT_RELRSZ = 35
+    DT_RELR = 36
+    DT_RELRENT = 37
     DT_GNU_PRELINKED = 0x6ffffdf5
     DT_GNU_CONFLICTSZ = 0x6ffffdf6
     DT_GNU_LIBLISTSZ = 0x6ffffdf7