From aa903cfb1b8b2b9d5d5d23364cbf0a31b7c8d29a Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 31 May 1999 00:58:59 +0000 Subject: [PATCH] * readelf.c (process_relocs): Determine type of reloc from DT_PLTREL and from section type. --- binutils/ChangeLog | 5 +++++ binutils/readelf.c | 23 ++++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 58f9416977..47e692bfda 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +Mon May 31 09:56:22 1999 Andreas Schwab + + * readelf.c (process_relocs): Determine type of reloc from + DT_PLTREL and from section type. + 1999-05-29 Nick Clifton * readelf.c (get_elf_class): Display unknown class number. diff --git a/binutils/readelf.c b/binutils/readelf.c index 6419e6a1d1..8c69d961e7 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -1889,7 +1889,18 @@ process_relocs (file) { rel_offset = dynamic_info[DT_JMPREL]; rel_size = dynamic_info[DT_PLTRELSZ]; - is_rela = UNKNOWN; + switch (dynamic_info[DT_PLTREL]) + { + case DT_REL: + is_rela = FALSE; + break; + case DT_RELA: + is_rela = TRUE; + break; + default: + is_rela = UNKNOWN; + break; + } } if (rel_size) @@ -1934,18 +1945,10 @@ process_relocs (file) if (string_table == NULL) { printf ("%d", section->sh_name); - is_rela = UNKNOWN; } else { printf ("'%s'", SECTION_NAME (section)); - - if (strncmp (".rela.", SECTION_NAME (section), 6) == 0) - is_rela = TRUE; - else if (strncmp (".rel.", SECTION_NAME (section), 5) == 0) - is_rela = FALSE; - else - is_rela = UNKNOWN; } printf (_(" at offset 0x%lx contains %lu entries:\n"), @@ -1963,6 +1966,8 @@ process_relocs (file) GET_DATA_ALLOC (strsec->sh_offset, strsec->sh_size, strtab, char *, "string table"); + + is_rela = section->sh_type == SHT_RELA; dump_relocations (file, rel_offset, rel_size, symtab, strtab, is_rela);