--- peXXigen.c.objdump_patched2 2002-05-25 13:50:21.000000000 +0200 +++ peXXigen.c 2002-05-27 22:56:28.000000000 +0200 @@ -1182,6 +1182,7 @@ pe_print_idata (abfd, vfile) if (hint_addr != 0) { + int iat_member; bfd_byte *ft_data; asection *ft_section; bfd_vma ft_addr; @@ -1190,7 +1191,7 @@ pe_print_idata (abfd, vfile) int differ = 0; int ft_allocated = 0; - fprintf (file, _("\tvma: Hint/Ord Member-Name\n")); + fprintf (file, _("\tvma: Hint/Ord Member-Name Bound-To\n")); idx = hint_addr - adj; @@ -1266,6 +1267,7 @@ pe_print_idata (abfd, vfile) fprintf (file, "\t%04lx\t %4d %s", member, ordinal, member_name); } + iat_member = bfd_get_32 (abfd, ft_data + ft_idx + j); /* If the time stamp is not zero, the import address table holds actual addresses. */ @@ -1273,59 +1275,11 @@ pe_print_idata (abfd, vfile) && first_thunk != 0 && first_thunk != hint_addr) fprintf (file, "\t%04lx", - (long) bfd_get_32 (abfd, ft_data + ft_idx + j)); + (long) iat_member); fprintf (file, "\n"); } - - for (j = 0; j < datasize; j += 4) - { - int ordinal; - char *member_name; - bfd_vma hint_member = 0; - bfd_vma iat_member; - - if (hint_addr != 0) - hint_member = bfd_get_32 (abfd, data + idx + j); - iat_member = bfd_get_32 (abfd, ft_data + ft_idx + j); - - if (hint_addr == 0 && iat_member == 0) - break; - - if (hint_addr == 0 || hint_member != iat_member) - { - if (differ == 0) - { - fprintf (file, - _("\tThe Import Address Table (difference found)\n")); - fprintf (file, _("\tvma: Hint/Ord Member-Name\n")); - differ = 1; - } - - if (iat_member == 0) - fprintf (file, - _("\t>>> Ran out of IAT members!\n")); - - else if (hint_member != 0) - { - ordinal = bfd_get_16 (abfd, data + hint_member - adj); - member_name = (char *) data + hint_member - adj + 2; - fprintf (file, "\t%04lx\t %4d %s\n", - (unsigned long) iat_member, - ordinal, - member_name); - } - } - - if (hint_addr != 0 && hint_member == 0) - break; - } - - if (differ == 0) - fprintf (file, - _("\tThe Import Address Table is identical\n")); - if (ft_allocated) free (ft_data); }