X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tools%2Fcmpmrg_text.c;h=3862ef369a720208475d1ad1f1dc13b97e14eece;hb=b74c31e30301a2e5c03e2947a5017af28bf94e65;hp=5a0d29695e255aafc450d73d89cd9e51e88025af;hpb=a2f78da4b699ffcdec280c7cb489fefc38c3a3cc;p=ia32rtools.git diff --git a/tools/cmpmrg_text.c b/tools/cmpmrg_text.c index 5a0d296..3862ef3 100644 --- a/tools/cmpmrg_text.c +++ b/tools/cmpmrg_text.c @@ -287,11 +287,11 @@ static int handle_pad(uint8_t *d_obj, uint8_t *d_exe, int maxlen) { static const uint8_t p7[7] = { 0x8d, 0xa4, 0x24, 0x00, 0x00, 0x00, 0x00 }; static const uint8_t p6[6] = { 0x8d, 0x9b, 0x00, 0x00, 0x00, 0x00 }; - static const uint8_t p5[5] = { 0x05, 0x00, 0x00, 0x00, 0x00 }; - static const uint8_t p4[4] = { 0x8d, 0x64, 0x24, 0x00 }; - static const uint8_t p3[3] = { 0x8d, 0x49, 0x00 }; - static const uint8_t p2[2] = { 0x8b, 0xff }; - static const uint8_t p1[1] = { 0x90 }; + static const uint8_t p5[5] = { 0x05, 0x00, 0x00, 0x00, 0x00 }; // add eax, 0 + static const uint8_t p4[4] = { 0x8d, 0x64, 0x24, 0x00 }; // lea + static const uint8_t p3[3] = { 0x8d, 0x49, 0x00 }; // lea ecx, [ecx] + static const uint8_t p2[2] = { 0x8b, 0xff }; // mov edi, edi + static const uint8_t p1[1] = { 0x90 }; // nop int len; int i; @@ -474,7 +474,7 @@ static void fill_int3(unsigned char *d, int len) int main(int argc, char *argv[]) { - unsigned int base = 0, addr, addr2, end, sym, *t; + unsigned int base = 0, addr, end, sym, *t; struct my_sect_info s_text_obj, s_text_exe; struct my_symtab *raw_syms_obj = NULL; struct my_symtab *syms_obj = NULL; @@ -494,14 +494,14 @@ int main(int argc, char *argv[]) f_obj = fopen(argv[1], "r+b"); if (f_obj == NULL) { - fprintf(stderr, "%s", argv[1]); + fprintf(stderr, "%s: ", argv[1]); perror(""); return 1; } f_exe = fopen(argv[2], "r"); if (f_exe == NULL) { - fprintf(stderr, "%s", argv[2]); + fprintf(stderr, "%s: ", argv[2]); perror(""); return 1; } @@ -608,10 +608,12 @@ int main(int argc, char *argv[]) i--; s_text_obj.reloc_cnt--; } +#if 0 // note: branches/calls already linked, // so only useful for dd refs + // XXX: rm'd because of switch tables else if (raw_syms_obj[sym].is_text) { - addr2 = raw_syms_obj[sym].addr; + unsigned int addr2 = raw_syms_obj[sym].addr; if (s_text_obj.data[addr2] == 0xcc) { printf("warning: reloc %08x -> %08x " "points to rm'd target '%s'\n", @@ -619,6 +621,7 @@ int main(int argc, char *argv[]) raw_syms_obj[sym].name); } } +#endif } // patch .text