Chapter 3. Background Information

Before I start explaining what I found, I think it would be helpful to begin with a bit of a review of the ELF file format and how things get executed in Linux.

3.1. Executable File Formats

The product of compiling a C program is some machine language. But raw machine language isn't enough to allow the OS to run your code. The OS will want to know several pieces of meta-information with regards to your program before loading and running it; such as:

One way to solve this problem is to use a file format; a file format that contains not only the raw machine language code, but all the required additional information as well. There have been many such file formats devised over the years. Ones that I am familiar with include: