Path: utzoo!mnetor!uunet!husc6!bloom-beacon!gatech!udel!mmdf From: frank@morgan.com (Frank Wortner) Newsgroups: comp.os.minix Subject: Problem Compiling PD-Tar Message-ID: <1973@louie.udel.EDU> Date: 8 Apr 88 21:21:49 GMT Sender: mmdf@udel.EDU Lines: 64 This is probably mostly for the authors of the Minix C compiler (are you out there, Andy & Co? :-)), but others familiar with it may be able to help. I've been trying to compile John Gilmore's PD-Tar program with the 1.2 Minix C compiler. The compiler "blows up" on what seems to be legal C. It dies with the diagnostic "Error: bombed out of codegen." I've tracked down the problem to the following function: int read_header() { register int i; register long sum, recsum; register char *p; register union record *header; header = findrec(); head = header; /* This is our current header */ if (NULL == header) return EOF; recsum = from_oct(8, header->header.chksum); sum = 0; p = header->charptr; for (i = sizeof(*header); --i >= 0;) { /* * We can't use unsigned char here because of old compilers, * e.g. V7. */ sum += 0xFF & *p++; } /* ... more stuff, deleted for brevity's sake */ If I remove the register declarations and change the line sum += 0xFF & *p++; to sum += 0xFF & *p; ++p; the compilation seems to work. I don't think the compiler is running out of memory, since I moved both compiler and pdtar to a Sun and got the same results. Any ideas why this happens? Once I get everything comiled, I run into a problem linking. Asld insists that the lable _12 is multiply defined. Looking over the .s files, it is true, there are several _12s scattered in various files. What causes this? I may break down and massage the assembly language by hand just to compile this program, but I'd just like to know why the 1.2 compiler (in most respects, a vast improvement over the 1.1 version) hates *this* program so. I haven't had trouble with Minix sources or other public domain Un*x programs. Frank Wortner frank@morgan.com ...!{uunet, sun}!mstan!frank