Path: utzoo!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!ames!mailrus!tut.cis.ohio-state.edu!bloom-beacon!mcgill-vision!mouse From: mouse@mcgill-vision.UUCP (der Mouse) Newsgroups: comp.bugs.4bsd Subject: Re: libraries may hide porting problems Message-ID: <1299@mcgill-vision.UUCP> Date: 9 Sep 88 20:56:37 GMT References: <3400002@m.cs.uiuc.edu> Organization: McGill University, Montreal Lines: 19 In article , ron@topaz.rutgers.edu (Ron Natalie) writes: > You're problem is NOT that the _four is not properly reported as > being multiply defined, it is that the module two.o isn't loaded at > all. The "int a" declaration generates a .com of the appropriate > space. Declarations need not force loading of modules with identical > declarations. Except the declarations weren't identical. The explicitly-loaded .o file's declaration was explicitly extern. The one in the library was a non-extern definition (a "tentative" definition). *Some* definition of that variable is needed somewhere, or the loader will (properly) generate an undefined symbol error. The problem is that two.o provides that definition, but the definition is being taken from two.o without including the rest of two.o. I agree with the original poster that this is a bug. der Mouse old: mcgill-vision!mouse new: mouse@larry.mcrcim.mcgill.edu