Re: readelf: Support SHT_RELR/DT_RELR for -r
authorAlan Modra <amodra@gmail.com>
Mon, 22 May 2023 07:55:36 +0000 (17:25 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 22 May 2023 07:55:36 +0000 (17:25 +0930)
Revert value of DT_ENCODING to as it was before commit a7fd118627, and
adjust readelf.

include/
* elf/common.h (DT_ENCODING): Set back to 32.
binutils/
* readelf.c (struct filedata): Don't size dynamic_info array
using DT_ENCODING.

binutils/readelf.c
include/elf/common.h

index b872876a8b660be19e1ffc66ee300d0bbfaed345..d8ad58b15dc2f52e689f903694f88505ba4d8f86 100644 (file)
@@ -304,7 +304,7 @@ typedef struct filedata
   uint64_t *           mipsxlat;
   uint64_t             gnusymidx;
   char *               program_interpreter;
-  uint64_t             dynamic_info[DT_ENCODING];
+  uint64_t             dynamic_info[DT_RELRENT + 1];
   uint64_t             dynamic_info_DT_GNU_HASH;
   uint64_t             dynamic_info_DT_MIPS_XHASH;
   elf_section_list *   symtab_shndx_list;
index 6f64f05890cc6feba0e9d518abf73e6187d903b0..ffa6b60bd2bfe9cc3e78a1506b95e7ce800cd78a 100644 (file)
 #define DT_FINI_ARRAYSZ 28
 #define DT_RUNPATH     29
 #define DT_FLAGS       30
+
+/* Values in the range [DT_ENCODING, DT_LOOS) use d_un.d_ptr if the
+   value is even, d_un.d_val if odd.  */
+#define DT_ENCODING    32
 #define DT_PREINIT_ARRAY   32
 #define DT_PREINIT_ARRAYSZ 33
 #define DT_SYMTAB_SHNDX    34
 #define DT_RELRSZ      35
 #define DT_RELR                36
 #define DT_RELRENT     37
-#define DT_ENCODING    38
 
 /* Note, the Oct 4, 1999 draft of the ELF ABI changed the values
    for DT_LOOS and DT_HIOS.  Some implementations however, use