Source: cirosantilli/elf-hello-world/implementations

= Implementations

* Compiler toolchains generate and read ELF files.

  Sane compilers should use a separate standalone library to do the dirty work. E.g., Binutils uses BFD (in-tree and canonical source).

* Operating systems read and run ELF files.

  Kernels cannot link to a library nor use the C stlib, so they are more likely to implement it themselves.

  This is the case of the Linux kernel 4.2 which implements it in th file `fs/binfmt_elf.c`.

* Specialized libraries. Examples:
  * https://github.com/eliben/pyelftools. By a hardcore Googler: https://plus.google.com/+EliBenderskyGplus/posts
  * https://sourceforge.net/projects/elftoolchain