+Thu May 27 11:58:33 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * readelf.c (dump_relocations): Always print the addend on RELA
+       systems even if there is no symbol.
+       (process_program_headers): Reset dynamic_size before looping
+       through the program headers.
+       (process_version_sections): Cast sh_offset to unsigned long for
+       printing in case bfd_vma is wider.
+       (process_symbol_table): Use get_symbol_index_type when printing
+       st_shndx.
+
 1999-05-17  DJ Delorie  <dj@cygnus.com>
 
        * windres.c: add verbose option
 
          if (is_rela)
            printf (" + %lx", (unsigned long) relas [i].r_addend);
        }
+      else if (is_rela)
+       printf ("%34c%lx", ' ', (unsigned long) relas[i].r_addend);
 
       putchar ('\n');
     }
 
   loadaddr = -1;
   dynamic_addr = 0;
+  dynamic_size = 0;
 
   for (i = 0, segment = program_headers;
        i < elf_header.e_phnum;
            printf (_("  Addr: 0x"));
            printf_vma (section->sh_addr);
            printf (_("  Offset: %#08lx  Link: %lx (%s)\n"),
-                   section->sh_offset, section->sh_link,
+                   (unsigned long) section->sh_offset, section->sh_link,
                    SECTION_NAME (section_headers + section->sh_link));
 
            GET_DATA_ALLOC (section->sh_offset, section->sh_size,
            printf (_(" Addr: 0x"));
            printf_vma (section->sh_addr);
            printf (_("  Offset: %#08lx  Link to section: %ld (%s)\n"),
-                   section->sh_offset, section->sh_link,
+                   (unsigned long) section->sh_offset, section->sh_link,
                    SECTION_NAME (section_headers + section->sh_link));
 
            GET_DATA_ALLOC (section->sh_offset, section->sh_size,
            printf (_(" Addr: "));
            printf_vma (section->sh_addr);
            printf (_("  Offset: %#08lx  Link: %lx (%s)\n"),
-                   section->sh_offset, section->sh_link,
+                   (unsigned long) section->sh_offset, section->sh_link,
                    SECTION_NAME (link_section));
 
            GET_DATA_ALLOC (version_info [DT_VERSIONTAGIDX (DT_VERSYM)]
                      get_symbol_binding (ELF_ST_BIND (psym->st_info)),
                      psym->st_other);
 
-             if (psym->st_shndx == 0)
-               fputs (" UND", stdout);
-             else if ((psym->st_shndx & 0xffff) == 0xfff1)
-               fputs (" ABS", stdout);
-             else if ((psym->st_shndx & 0xffff) == 0xfff2)
-               fputs (" COM", stdout);
-             else
-               printf ("%4x", psym->st_shndx);
+             printf ("%4s", get_symbol_index_type (psym->st_shndx));
 
              printf (" %s", strtab + psym->st_name);