Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!rutgers!cs.utexas.edu!uunet!sco!rosso From: rosso@sco.COM (Ross Oliver) Newsgroups: comp.unix.xenix Subject: Re: A question about 386 binaries Message-ID: <2653@viscous.sco.COM> Date: 25 Apr 89 21:06:48 GMT References: <817@sunset.MATH.UCLA.EDU> Reply-To: uunet!sco!rosso (Ross Oliver) Distribution: usa Organization: SCO Technical Support Lines: 61 In article <817@sunset.MATH.UCLA.EDU> tony@MATH.UCLA.EDU () writes: >I hope someone out there can answer this question: > >Is it true that all bianries created under various different 80386 based >UNIX/XENIX operating systems are fully portable; i.e will the program >executables compiled on a Unisys 386 machine running Unix Sys V work >(without modifications) under SCO Xenix 2.3.1 (on a 386 clone)? > >How about C libraries and object files, are they portable also? Here's the scoop. I'll start with some definitions: x.out: the format that XENIX (SCO, Microsoft, Altos, et. al.) uses for binary executable files. OMF: stands for Object Module Format. This format was defined by Intel, and is used for object modules (i.e. .o files) under both MS-DOS and XENIX (although MS-DOS uses the .OBJ extension). COFF: stands for Common Object File Format. This is the format was defined by AT&T, and is used to refer to BOTH object files and executable binaries for 80386-based UNIX. Now for the compatibility questions: SCO XENIX Operating System release 2.2.x and earlier can execute only x.out executables. SCO XENIX Operating System release 2.3 and later can execute both x.out and COFF executables. SCO XENIX Development System 2.2.x and earlier can generate and use OMF files, and generate x.out executables. SCO XENIX Development System 2.3 can use existing OMF and COFF object modules, but can generate only OMF modules and x.out executables. AT&T incorporated the ability to execute x.out binaries into UNIX for the 80386, so UNIX 3.2 from any vendor (including the upcoming SCO UNIX System V product) will execute both x.out and COFF executables. SCO UNIX System V/386 Release 3.2 Development System will be able to generate and use OMF and COFF object modules, and generate both x.out and COFF executables. One final note: the XENIX floating point emulator does not emulate a few of the 80287 and 80387 instructions. The 80387 transcendental functions, for example, are not emulated. For x.out binaries, this is not a problem, since the XENIX C compiler generates only those instructions the emulator emulates. However, COFF binaries may contain coprocessor instructions that the XENIX floating point emulator can't do. To successfully run these binaries, a real coprocessor must be present. Otherwise, the programs will die with and "illegal instruction" error. This will not be a problem in SCO UNIX System V because it includes both the XENIX and UNIX floating point emulators. Ross Oliver Techical Support The Santa Cruz Operation, Inc.