eirik@labs.labs.tek.com (Eirik Fuller) (11/19/89)
With the enclosed patches I can run libg++/tests/test0 to successful completion on a sun386 with g++ using COFF encapsulation. Your line numbers will probably be different; I started with ld.c from g++-1.36.1, but I added patches for 68020 UTek (tek4300). I have also run all of the other tests in libg++/tests/ through sun386 g++; only tRandom generates output different from what a sparc generates; apparently tRandom's results are machine-dependent. My recent postings to bug-gnu-utils and bug-gcc (gnu.utils.bug and gnu.gcc.bug) contain most of what is necessary to build COFF encapsulation g++ on a sun386, beyond the relevant GNU sources. *** ld.c~ Tue Nov 7 13:58:42 1989 --- ld.c Sun Nov 19 02:41:07 1989 *************** *** 1022,1028 **** text_size = sizeof (struct exec); #ifdef COFF_ENCAPSULATE ! if (relocatable_output == 0) { need_coff_header = 1; /* set this flag now, since it will change the values of N_TXTOFF, etc */ --- 1022,1028 ---- text_size = sizeof (struct exec); #ifdef COFF_ENCAPSULATE ! if (relocatable_output == 0 && file_table[0].just_syms_flag == 0) { need_coff_header = 1; /* set this flag now, since it will change the values of N_TXTOFF, etc */ *************** *** 1644,1649 **** --- 1644,1653 ---- struct exec *loc = (struct exec *) &entry->header; lseek (desc, entry->starting_offset, 0); + #ifdef COFF_ENCAPSULATE + if (entry->just_syms_flag) + lseek (desc, sizeof(coffheader), 1); + #endif len = read (desc, loc, sizeof (struct exec)); if (len != sizeof (struct exec)) fatal_with_file ("failure reading header of ", entry); *************** *** 1753,1758 **** --- 1757,1767 ---- struct exec hdr; desc = file_open (entry); + + #ifdef COFF_ENCAPSULATE + if (entry->just_syms_flag) + lseek (desc, sizeof(coffheader),0); + #endif len = read (desc, &hdr, sizeof hdr); if (len != sizeof hdr)