home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16073 < prev    next >
Encoding:
Internet Message Format  |  1992-11-07  |  2.2 KB

  1. Path: sparky!uunet!olivea!spool.mu.edu!agate!dog.ee.lbl.gov!horse.ee.lbl.gov!torek
  2. From: torek@horse.ee.lbl.gov (Chris Torek)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: gcc and cc!
  5. Message-ID: <27267@dog.ee.lbl.gov>
  6. Date: 6 Nov 92 11:39:47 GMT
  7. References: <1dctt2INNkbi@function.mps.ohio-state.edu>
  8. Reply-To: torek@horse.ee.lbl.gov (Chris Torek)
  9. Organization: Lawrence Berkeley Laboratory, Berkeley
  10. Lines: 42
  11. NNTP-Posting-Host: 128.3.112.15
  12.  
  13. In article <1dctt2INNkbi@function.mps.ohio-state.edu>
  14. ren@function.mps.ohio-state.edu (Liming Ren) writes:
  15. >It seems to me that if we have two object file , say foo.o and bar.o,
  16. >one is compiled with gcc and the other with cc, then we can't link them 
  17. >together ....  Could some experts say more about this.
  18.  
  19. This is *extremely* implementation-dependent.
  20.  
  21. Every C compiler author must make decisions about the mapping from
  22. C source code to machine concepts and instruction set.  For most
  23. current machines, much of this mapping is obvious and straightforward,
  24. so that two compiler authors, working completely independently, are
  25. likely to come up with compatible schemes.
  26.  
  27. There are some notable exceptions:
  28.  
  29.     Whether string literals wind up in read-only storage.
  30.  
  31.     Stack frame layout (e.g., whether to waste a register on a
  32.     frame pointer, and where arguments go).
  33.  
  34.     Structure arguments and return values.
  35.  
  36.     Variable argument lists (printf() et al).
  37.  
  38.     Alloca.  (Strictly speaking, this is not a `real' C function,
  39.     but most implementations provide it anyway.)
  40.  
  41.     Object file formats, including symbol table formats.
  42.  
  43. If you can avoid any dependence on these---the last one is impossible
  44. ---you will usually be able to intermix different compiler objects.
  45.  
  46. In the specific case of GCC, GCC itself is typically compiled with,
  47. and/or tries to work with, each vendor's default implementation.  This
  48. tends to remove some of the above obstacles.  One that is likely to
  49. remain, and to affect user code, is the one dealing with structures.
  50. GCC provides a huge collection of special-purpose options, such as
  51. `-fpcc-struct-return' and `-msoft-float', to help work around these.
  52. -- 
  53. In-Real-Life: Chris Torek, Lawrence Berkeley Lab CSE/EE (+1 510 486 5427)
  54. Berkeley, CA        Domain:    torek@ee.lbl.gov
  55.