djones@decwrl.dec.com (Dave Jones) (03/21/89)
We are running Sun-3. Every now and then the subject of of possibly switching over to 4 comes up in conversation. I have some questions about the object (a.out) format. We have a Pascal compiler, an assembler, and a runtime loader which we maintain in-house, and there is a new compiler on the way. ( We can't use the standard versions for various reasons. For example, our Pascal supports interactive compile-load-run, sort of like LISP, Sabre-C, etc. .. Furthermore, the new compiler has to be portable to various platforms other than Sun. [ This all goes back to about the year 3 BS (before Sun). Indeed, Sun obtained their first 68000 Unix sources from us. My predecessors had ported a VAX Unix to a 68000 box that they had designed and built here, before decent OEM workstations became available. ] ) Anyhow, all of these programs understand the Sun-3 a.out format, which is almost exactly like 4.2BSD. Looking over the Sun-4 documentation, it seems that the changes Sun added to support shared libraries are compatible with the old format, except for the a_toolversion field. But the way relocation is done has changed significantly. (And I can't figure out why!) Some questions: 1. How badly will 4.0 break existing assemblers, loaders, etc.? 2. What are the snares and pitfalls? 3. Does the Sun-4 loader still like the old format? 4. Are the twenty-some-odd different relocation-types documented anywhere? Example: What is RELOC_SFA_OFF13? 5. Is Sun claiming they are going to standardize on this format, or will COFF, SPARC, and others yet undreamed of still be confusing the issue? 6. If and when I modify my programs, what should they set "a_toolversion" to? 7. What have I done to deserve this?