#include <stdio.h>
#include <stdlib.h>
#include <elf.h>


void print_info (Elf32_Ehdr *header) {
 const char *sym = NULL;

 if (ELFOSABI_SYSV == header->e_ident[EI_OSABI]) {
  printf ("running on a SYSV compatible system\n");
 }

 if (EM_386 == header->e_machine) {
  printf ("image generated for a 386\n");
 }

 printf ("entry point is %p\n", header->e_entry);

 printf ("e_phoff %lu e_shoff %lu\n", header->e_phoff, header->e_shoff);
}

int main () {
 FILE *fp;
 Elf32_Ehdr header; 
 Elf32_Phdr programHeader;
 Elf32_Shdr *sectionHeaders;

 if (NULL == (fp = fopen ("a.out", "rb"))) {
  perror ("fopen");
  return EXIT_FAILURE;
 }

 fread (&header, sizeof (header), (size_t) 1, fp);

 print_info (&header);

 fread (&programHeader, sizeof (programHeader), (size_t) 1, fp);

 sectionHeaders = malloc (header.e_shentsize * header.e_shnum);
/*
 fread (&sectionHeader, sizeof (sectionHeader), (size_t) 1, fp);
*/

 return EXIT_SUCCESS;
}
