bobm@concave.convex.com (Bob Miller) (02/24/90)
When ld scans an archive that has no __.SYMDEFS, it loses track of all members other than the last. Then it prints this fascinating message. internal error: wrong number of symbols written into output file The problem is in process_subentry. It isn't putting archive members onto the subentry chain right, so they aren't found on subsequent passes. Here's a fix. I'm using ld.c from the binutils product. The date on ld.c is October 17, 1989. *************** *** 2277,2283 **** prev->chain = subentry; else entry->subfiles = subentry; ! prev = subentry; subentry->strings = 0; /* Since space will dissapear on return */ } } --- 2294,2300 ---- prev->chain = subentry; else entry->subfiles = subentry; ! *prev_addr = subentry; subentry->strings = 0; /* Since space will dissapear on return */ } } K<bob> "Computers are my forte." Bob Miller/bobm@convex.com