Mercurial > hg > xemacs-beta
diff src/unexcw.c @ 269:b2472a1930f2 r20-5b33
Import from CVS: tag r20-5b33
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:27:19 +0200 |
parents | 727739f917cb |
children | 90d73dddcdc4 |
line wrap: on
line diff
--- a/src/unexcw.c Mon Aug 13 10:26:31 2007 +0200 +++ b/src/unexcw.c Mon Aug 13 10:27:19 2007 +0200 @@ -69,7 +69,7 @@ unsigned long bss_size = UNINIT_LONG; FILHDR f_hdr; PEAOUTHDR f_ohdr; -SCNHDR f_data, f_bss, f_text, f_idata; +SCNHDR f_data, f_bss, f_text, f_nextdata; #define PERROR(arg) perror(arg);exit(-1) #define CHECK_AOUT_POS(a) \ @@ -196,12 +196,12 @@ than the one Emacs was dumped on). */ data_size = (unsigned long)my_edata - (unsigned long)data_start_va; - /* The .idata section. */ - if (read (a_out, &f_idata, sizeof (f_idata)) != sizeof (f_idata) + /* The following data section. */ + if (read (a_out, &f_nextdata, sizeof (f_nextdata)) != sizeof (f_nextdata) && - strcmp (f_idata.s_name, ".rdata")) + strcmp (&f_nextdata.s_name[2], "data")) { - PERROR ("no .idata section"); + PERROR ("no other data section"); } } @@ -239,10 +239,10 @@ f_data.s_vaddr = f_bss.s_vaddr; f_data.s_paddr += new_bss_size; #if 0 - if (f_data.s_size + f_idata.s_size != f_ohdr.dsize) + if (f_data.s_size + f_nextdata.s_size != f_ohdr.dsize) { printf("section size doesn't tally with dsize %lx != %lx\n", - f_data.s_size + f_idata.s_size, f_ohdr.dsize); + f_data.s_size + f_nextdata.s_size, f_ohdr.dsize); } #endif f_data.s_size += new_bss_size; @@ -285,13 +285,13 @@ PERROR("failed to write data header"); } - printf("writing .idata header\n"); - f_idata.s_scnptr += file_sz_change; - if (f_idata.s_lnnoptr != 0) f_idata.s_lnnoptr += file_sz_change; - if (f_idata.s_relptr != 0) f_idata.s_relptr += file_sz_change; - if (write(a_new, &f_idata, sizeof(f_idata)) != sizeof(f_idata)) + printf("writing following data header\n"); + f_nextdata.s_scnptr += file_sz_change; + if (f_nextdata.s_lnnoptr != 0) f_nextdata.s_lnnoptr += file_sz_change; + if (f_nextdata.s_relptr != 0) f_nextdata.s_relptr += file_sz_change; + if (write(a_new, &f_nextdata, sizeof(f_nextdata)) != sizeof(f_nextdata)) { - PERROR("failed to write idata header"); + PERROR("failed to write nextdata header"); } /* copy other section headers adjusting the file offset */ @@ -361,21 +361,21 @@ static_heap_dumped = 0; size = lseek(a_out, f_data_s_scnptr + data_size, SEEK_SET); - size = f_idata.s_scnptr - size; + size = f_nextdata.s_scnptr - size; dup_file_area(a_out, a_new, size); - // lseek(a_out, f_idata.s_scnptr, SEEK_CUR); - CHECK_AOUT_POS(f_idata.s_scnptr); - /* now dump - idata don't need to do this cygwin ds is in .data! */ - printf ("dumping .idata section... %lx bytes\n", f_idata.s_size); + // lseek(a_out, f_nextdata.s_scnptr, SEEK_CUR); + CHECK_AOUT_POS(f_nextdata.s_scnptr); + /* now dump - nextdata don't need to do this cygwin ds is in .data! */ + printf ("dumping following data section... %lx bytes\n", f_nextdata.s_size); - dup_file_area(a_out,a_new,f_idata.s_size); + dup_file_area(a_out,a_new,f_nextdata.s_size); /* write rest of file */ printf ("writing rest of file\n"); size = lseek(a_out, 0, SEEK_END); - size = size - (f_idata.s_scnptr + f_idata.s_size); /* length remaining in a_out */ - lseek(a_out, f_idata.s_scnptr + f_idata.s_size, SEEK_SET); + size = size - (f_nextdata.s_scnptr + f_nextdata.s_size); /* length remaining in a_out */ + lseek(a_out, f_nextdata.s_scnptr + f_nextdata.s_size, SEEK_SET); dup_file_area(a_out, a_new, size); }