aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2023-05-22 17:25:36 +0930
committerAlan Modra <amodra@gmail.com>2023-05-22 17:25:36 +0930
commitbc227f4ccb0778a56ca3d9f27652fd9e5e2747ea (patch)
tree32b46bd267309c97d3d08c988851a08b8b4f64dd
parent17a6f5f26c661dd0f72133cac20db823bf57d7a3 (diff)
downloadbinutils-bc227f4ccb0778a56ca3d9f27652fd9e5e2747ea.zip
binutils-bc227f4ccb0778a56ca3d9f27652fd9e5e2747ea.tar.gz
binutils-bc227f4ccb0778a56ca3d9f27652fd9e5e2747ea.tar.bz2
Re: readelf: Support SHT_RELR/DT_RELR for -r
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.
-rw-r--r--binutils/readelf.c2
-rw-r--r--include/elf/common.h5
2 files changed, 5 insertions, 2 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index b872876..d8ad58b 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -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;
diff --git a/include/elf/common.h b/include/elf/common.h
index 6f64f05..ffa6b60 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -1135,13 +1135,16 @@
#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