_why_ does the UNIX linker not distinguish text and data addresses???
    Stephen Clamage 
    steve at taumet.com
       
    Wed Aug  1 02:25:17 AEST 1990
    
    
  
levy at mtcchi.uucp (Daniel R. Levy) writes:
|::::::::::::::
|a.c
|::::::::::::::
|main()
|{
|	(void) bogus();
|}
|::::::::::::::
|b.c
|::::::::::::::
|int bogus;
Traditional Unix object-file formats, and thus the linkers, are very
simple-minded.  They certainly could distinguish between text and
data addresses, but simply don't.  It is up to the programmer, even
in ANSI C, to take care that extern declarations/definitions in separate
compilation units match.  Lint will generally pick up mismatches.
In C++, BTW, this example will fail at link time no matter what linker
is used, since the type of the function is encoded by the compiler into
its true external name.
-- 
Steve Clamage, TauMetric Corp, steve at taumet.com
    
    
More information about the Comp.unix.wizards
mailing list