* readelf.c (process_relocs): Determine type of reloc from
authorAndreas Schwab <schwab@linux-m68k.org>
Mon, 31 May 1999 00:58:59 +0000 (00:58 +0000)
committerAndreas Schwab <schwab@linux-m68k.org>
Mon, 31 May 1999 00:58:59 +0000 (00:58 +0000)
DT_PLTREL and from section type.

binutils/ChangeLog
binutils/readelf.c

index 58f9416977d50528f6ef08345c7abf098d11b6f0..47e692bfda8c4b7c5224844ab1d9d6c81b1e34b4 100644 (file)
@@ -1,3 +1,8 @@
+Mon May 31 09:56:22 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * readelf.c (process_relocs): Determine type of reloc from
+       DT_PLTREL and from section type.
+
 1999-05-29  Nick Clifton  <nickc@cygnus.com>
 
        * readelf.c (get_elf_class): Display unknown class number.
index 6419e6a1d134f762d756f5b3a505f9d1f9718356..8c69d961e78afc37bbfc3559b9aed77119128cd4 100644 (file)
@@ -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);