Executable File Formats
.com, .exe, .lib, .obj, a.out, ELF, LE, PE..
- Executable & Linking Format
- ELF is the standard executable format on most if not all x86 Unices... read all about it!
- a.out Format - contrib by Anders Gavare
- "The a.out format was created to be simple to map directly into a process virtual address space, to load it on demand (as pages of the code were accessed). If you are extremely sensitive about speed, you might find ELF a bit slower, since reading the ELF header is more complicated than reading the a.out header."
- Digital Unix V5 Object File Spec
- This is the official definition of the object file and symbol table formats used for DIGITAL UNIX object files. It also describes the legal uses of the formats and their interpretation.
- DWARF Debugging Format v1.1.0
- This document describes v1.1 of the DWARF spec, which is actually must simpler and more widely used than the 2.0 spec...
- DWARF Debugging Format v2.0
- "This document defines the format for the information generated by compilers, assemblers and linkage editors that is necessary for symbolic, source-level debugging. The debugging information format does not favor the design of any compiler or debugger. Instead, the goal is to create a method of communicating an accurate picture of the source program to any debugger in a form that is economically extensible to different languages while retaining backward compatibility"...
- DJGPP COFF Spec - by DJ Delorie
- "This document should be considered to be the ultimate reference to the DJGPP COFF format. That doesn't mean it's complete, but since this format isn't really documented elsewhere, this is as good as it gets..."
- NE Executable-File Header Format (3.1)
- "An executable (.EXE) file for the Windows 3.1 operating system contains a combination of code and data or a combination of code, data, and resources. The executable file also contains two headers: an MS-DOS header and a Windows header." This file describe these headers as well as the code and data contained in a Windows executable file."
- PE - Portable Executable Format
- The current binary executable file format used by Microsoft Windows. This is the primary format used in Windows NT and Windows 9x...
- LX - Linear eXecutable Module Format Description - by Edd Doutre
- "The LX format was developed by myself [that is, Edd] (at IBM) as the new and improved flavor that was hoped to be common between OS/2 and Windows NT. However, the guys at Redmond were still changing the format around in quite significant ways and IBM shipped OS/2 using the LX format.
The whole idea was to create something that was oriented towards performance on an Intel platform, using 4096 byte paging. There are page tables in the LX format and the process of 'loading' (whatever that means to the various people who may be reading this) would consist only of reading in the header and page tables. Actual execution would result in page-not-present faults which could easily use the page tables to load that actual page of code or data from the binary file. In addition, the file size seems to be about one half of the size of the same object modules re-linked into the Microsoft PE format." - Thanks to Edd Doutre for the corrected summary!
- IBM OS/2 32 bit Object Module Format (OMF) and Linear eXecutable Module Format (LX) - by IBM Corp
- This file describes the IBM OMF file format and LX records. It's in a wierd .script format, but it is easy to ignore the extra markup...
- .COM File Format - by Max Maischein
- A very short document on the very simple .COM file format.
- .EXE File Format
- File header and relocation information.
- .SYS File Format - by Brian Fraser
- File format used by DOS system drivers... typically in the config.sys file.
- Appending files to EXE files - by Charles Jones
- "After seeing several questions on appending files to EXEs, I decided to write this text. I did NOT originate this idea. While this text describes "a" way of implementing the technique it may not be the best way for your needs. I have simply attempted to supply you with a basic understanding of the process." - This file came in a package that included a bunch of source and examples.
- Advanced Linking Techniques - by Ervin
- "In the good old days most of the programs had many files. That was a simple and convenient way for storing the necessary data. But the time quickly ran forth and a new tendency appeared: the single EXE method. This is more difficult to deal with (from the coders' point of view), but it's also more elegant. So this article discusses some system coding, which is important in a demo, but quite invisible."
- DOS Intermediate Compiler File Formats:
- .OBJ File Format v1.1
- .OBJ File Format
- "This document is intended to serve a purpose that up until now has been performed by the LINK source code: to be the official definition for the object module format (the information inside .OBJ files) supported by Microsoft's language products. The goal is to include all currently used or obsolete OMF record types, all currently used or obsolete field values, and all extensions made by Microsoft, IBM, and others."
- .LIB File Format
- "This article describes the components of the Microsoft .LIB Format. The .LIB Format is consistent between compatible Microsoft languages." Also interesting is this article on the dictionary hashing function used for .LIB files.
- Microsoft Symbol and Type Information
- "This document describes the format and meaning of Microsoft symbol and type debugging information. The information is contained within two tables emitted by the language processor into the object file. Each table is treated as a stream of variable length records."... basically the format Microsoft uses to store source level debugging info in .OBJ files.
(new!) sections have been updated in the last week...
(recent) sections have been updated in the last two weeks...