* elf.c (_bfd_elf_print_private_bfd_data): New function.
authorIan Lance Taylor <ian@airs.com>
Wed, 29 Nov 1995 18:46:07 +0000 (18:46 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 29 Nov 1995 18:46:07 +0000 (18:46 +0000)
* elf-bfd.h (_bfd_elf_print_private_bfd_data): Declare.
* elfxx-target.h (bfd_elfNN_bfd_print_private_bfd_data): Define to
_bfd_elf_print_private_bfd_data.

bfd/ChangeLog
bfd/elf.c
bfd/elfxx-target.h

index 0411cedb2778d0da040b9c7e25a8cdb77d35ad1b..7e5b6947f3605f9c55914fd9dd34e90376f62cf8 100644 (file)
@@ -1,5 +1,10 @@
 Wed Nov 29 12:42:36 1995  Ian Lance Taylor  <ian@cygnus.com>
 
+       * elf.c (_bfd_elf_print_private_bfd_data): New function.
+       * elf-bfd.h (_bfd_elf_print_private_bfd_data): Declare.
+       * elfxx-target.h (bfd_elfNN_bfd_print_private_bfd_data): Define to
+       _bfd_elf_print_private_bfd_data.
+
        * coff-alpha.c (alpha_ecoff_swap_reloc_in): Don't abort if
        r_symndx is RELOC_SECTION_NONE for an ALPHA_R_IGNORE reloc.
        Change a RELOC_SECTION_LITA symndx to RELOC_SECTION_ABS.
index 083f8d2c07b53ae98257a26e095ac21b2784ad07..b00997fa5259a06777d8f6f8d1da6d56f8e6bf66 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -330,6 +330,61 @@ bfd_elf_generic_reloc (abfd,
   return bfd_reloc_continue;
 }
 \f
+/* Print out the program headers.  */
+
+boolean
+_bfd_elf_print_private_bfd_data (abfd, farg)
+     bfd *abfd;
+     PTR farg;
+{
+  FILE *f = (FILE *) farg;
+  Elf_Internal_Phdr *p;
+  unsigned int i, c;
+
+  p = elf_tdata (abfd)->phdr;
+  if (p == NULL)
+    return true;
+
+  c = elf_elfheader (abfd)->e_phnum;
+  for (i = 0; i < c; i++, p++)
+    {
+      const char *s;
+      char buf[20];
+
+      switch (p->p_type)
+       {
+       case PT_NULL: s = "NULL"; break;
+       case PT_LOAD: s = "LOAD"; break;
+       case PT_DYNAMIC: s = "DYNAMIC"; break;
+       case PT_INTERP: s = "INTERP"; break;
+       case PT_NOTE: s = "NOTE"; break;
+       case PT_SHLIB: s = "SHLIB"; break;
+       case PT_PHDR: s = "PHDR"; break;
+       default: sprintf (buf, "0x%lx", p->p_type); s = buf; break;
+       }
+      fprintf (f, "%8s off    0x", s);
+      fprintf_vma (f, p->p_offset);
+      fprintf (f, " vaddr 0x");
+      fprintf_vma (f, p->p_vaddr);
+      fprintf (f, " paddr 0x");
+      fprintf_vma (f, p->p_paddr);
+      fprintf (f, " align 2**%u\n", bfd_log2 (p->p_align));
+      fprintf (f, "         filesz 0x");
+      fprintf_vma (f, p->p_filesz);
+      fprintf (f, " memsz 0x");
+      fprintf_vma (f, p->p_memsz);
+      fprintf (f, " flags %c%c%c",
+              (p->p_flags & PF_R) != 0 ? 'r' : '-',
+              (p->p_flags & PF_W) != 0 ? 'w' : '-',
+              (p->p_flags & PF_X) != 0 ? 'x' : '-');
+      if ((p->p_flags &~ (PF_R | PF_W | PF_X)) != 0)
+       fprintf (f, " %lx", p->p_flags &~ (PF_R | PF_W | PF_X));
+      fprintf (f, "\n");
+    }
+
+  return true;
+}
+
 /* Display ELF-specific fields of a symbol.  */
 void
 bfd_elf_print_symbol (ignore_abfd, filep, symbol, how)
index 5ef3ed0d393fce85d20fcd901b777655fec113a1..e719d0d5fa2fdb51bafdffb82361c788f3adca99 100644 (file)
@@ -101,7 +101,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #endif
 #ifndef bfd_elfNN_bfd_print_private_bfd_data
 #define bfd_elfNN_bfd_print_private_bfd_data \
-  ((boolean (*) PARAMS ((bfd *, void *))) bfd_true)
+  _bfd_elf_print_private_bfd_data
 #endif
 #ifndef bfd_elfNN_bfd_merge_private_bfd_data
 #define bfd_elfNN_bfd_merge_private_bfd_data \