diff options
author | Fangrui Song <maskray@google.com> | 2021-11-04 01:30:12 -0700 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-11-06 17:11:08 +1030 |
commit | dd207c1302d28d2d2b33cff058bb3fbf5138b480 (patch) | |
tree | 5892f0c7480c96fec278d396a499abd7fe5503c5 | |
parent | 04d8355ac606cc96390a51d3db1152aafd4747c6 (diff) | |
download | gdb-dd207c1302d28d2d2b33cff058bb3fbf5138b480.zip gdb-dd207c1302d28d2d2b33cff058bb3fbf5138b480.tar.gz gdb-dd207c1302d28d2d2b33cff058bb3fbf5138b480.tar.bz2 |
readelf: Support RELR in -S and -d and output
readelf -r dumping support is not added in this patch.
include/
* elf/common.h: Add SHT_RELR, DT_RELR{,SZ,ENT}
bfd/
* elf.c (_bfd_elf_print_private_bfd_data): Add DT_RELR{,SZ,ENT}.
binutils/
* readelf.c (get_dynamic_type): Add DT_RELR{,SZ,ENT}.
(get_section_type_name): Add SHT_RELR.
-rw-r--r-- | bfd/elf.c | 3 | ||||
-rw-r--r-- | binutils/readelf.c | 6 | ||||
-rw-r--r-- | include/elf/common.h | 4 |
3 files changed, 13 insertions, 0 deletions
@@ -1773,6 +1773,9 @@ _bfd_elf_print_private_bfd_data (bfd *abfd, void *farg) case DT_REL: name = "REL"; break; case DT_RELSZ: name = "RELSZ"; break; case DT_RELENT: name = "RELENT"; break; + case DT_RELR: name = "RELR"; break; + case DT_RELRSZ: name = "RELRSZ"; break; + case DT_RELRENT: name = "RELRENT"; break; case DT_PLTREL: name = "PLTREL"; break; case DT_DEBUG: name = "DEBUG"; break; case DT_TEXTREL: name = "TEXTREL"; break; diff --git a/binutils/readelf.c b/binutils/readelf.c index 7a162ee..cf3168f 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -2228,6 +2228,9 @@ get_dynamic_type (Filedata * filedata, unsigned long type) case DT_REL: return "REL"; case DT_RELSZ: return "RELSZ"; case DT_RELENT: return "RELENT"; + case DT_RELR: return "RELR"; + case DT_RELRSZ: return "RELRSZ"; + case DT_RELRENT: return "RELRENT"; case DT_PLTREL: return "PLTREL"; case DT_DEBUG: return "DEBUG"; case DT_TEXTREL: return "TEXTREL"; @@ -4535,6 +4538,7 @@ get_section_type_name (Filedata * filedata, unsigned int sh_type) case SHT_SYMTAB: return "SYMTAB"; case SHT_STRTAB: return "STRTAB"; case SHT_RELA: return "RELA"; + case SHT_RELR: return "RELR"; case SHT_HASH: return "HASH"; case SHT_DYNAMIC: return "DYNAMIC"; case SHT_NOTE: return "NOTE"; @@ -11385,6 +11389,8 @@ the .dynstr section doesn't match the DT_STRTAB and DT_STRSZ tags\n")); case DT_PLTPADSZ: case DT_MOVEENT : case DT_MOVESZ : + case DT_RELRENT : + case DT_RELRSZ : case DT_PREINIT_ARRAYSZ: case DT_INIT_ARRAYSZ: case DT_FINI_ARRAYSZ: diff --git a/include/elf/common.h b/include/elf/common.h index 42dadbb..4da28fa 100644 --- a/include/elf/common.h +++ b/include/elf/common.h @@ -523,6 +523,7 @@ #define SHT_PREINIT_ARRAY 16 /* Array of ptrs to pre-init funcs */ #define SHT_GROUP 17 /* Section contains a section group */ #define SHT_SYMTAB_SHNDX 18 /* Indices for SHN_XINDEX entries */ +#define SHT_RELR 19 /* RELR relative relocations */ #define SHT_LOOS 0x60000000 /* First of OS specific semantics */ #define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ @@ -1105,6 +1106,9 @@ #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 /* Note, the Oct 4, 1999 draft of the ELF ABI changed the values for DT_LOOS and DT_HIOS. Some implementations however, use |