OBJ files found in
C6: %Root%\obj32
C6: %Root%\obj32\release
I can only find these two .obj files in C11 so I’m wondering if the compiler is doing something different at this stage, maybe cleaning up after compilation or maybe a different format suitable for dotnet.
C7+:%Root%\Lib\idll32.obj
C7+:%Root%\Lib\iexe32.obj
OBJ look like they are using this
Relocatable Object Module Format - Wikipedia
Explanation
Object file - Wikipedia
OMF_v1.1.pdf (pagesperso-orange.fr)
1 byte | Record type, for example relocation information |
---|---|
2 bytes | Data length (N+1) |
N bytes | Data (varies depending on the record type) |
1 byte | Checksum or 0 |
There is a wide variety of record types because of consolidation of OMF variants from several vendors, and because of adding such features
as 32-bit code and dynamic linking. These are important record types:
COMENT - (88h) Comment, which may also contain control information.
EXTDEF - (8Ch) Defines external references
PUBDEF - (90h/91h) Identifies external symbols in this module
SEGDEF - (98h/99h) Identifies segments
GRPDEF - (9Ah) Identifies groups of segments, for example MS-DOS DGROUP
FIXUPP - (9Ch/9Dh) Fixup or relocation records
LEDATA - (A0h/A1h) Contains text of a code or data section
COMDEF - (B0h) Uninitialized common data
COMDAT - (C2h/C3h) Initialized common data
MODEND - (8Ah/8Bh) Indicates end of module
Oracle has something similar for Solaris, there will be differences, but the principles will also be similar.
File Format - Linker and Libraries Guide (oracle.com)
Windows Portable Executable File Format
PE Format - Win32 apps | Microsoft Docs
Inside Windows: Win32 Portable Executable File Format in Detail | Microsoft Docs
The C6 project file makes a reference to
#pragma optimize(cpu=>386)
which is probably going to match this
`IMAGE_FILE_MACHINE_I386 0x14c Intel 386 or later processors and compatible processors
I think it will be possible to debug an exe file and tie up the different parts of the exe to the MS windows PE format. I think it might be interesting to see if there is anything non windows left in from the Topspeed days like maybe something of OS/2 perhaps?, there again that might only be seen in CW1.5, but I’ll have to have a look.
This ties in to the C7+ Pragma What does CUI mean in the export file?
IMAGE_SUBSYSTEM_WINDOWS_CUI 3 The Windows character subsystem