elf2flt The elf2flt package is a set of utilities designed to leverage existing Linux ELF (Executable and Linking Format) toolchains to produce FLAT files. These files are then executed on embedded Linux systems. Toolchain Integration The work flow is typically something like: compile source files into object files like normal call gcc to link the final application gcc calls the linker (which is pointing to ld-elf2flt) ld-elf2flt does multiple things craft a special linker script using elf2flt.ld as input call the linker with special linker options and the linker script link the helper ”.gdb” ELF (Executable and Linking Format) (used for debugging with gdb) link an intermediate ELF (Executable and Linking Format) call the elf2flt helper with the intermediate ELF (Executable and Linking Format) elf2flt creates the final FLAT executable So that people need not run these programs themselves, the real linker is renamed so that gcc transparently calls the ld-elf2flt helper in place of the real linker. This is accomplished by renaming the real linker from ld to ld.real and installing ld-elf2flt as ld. At runtime, ld-elf2flt (now named ld) will be executed by gcc and it will in turn locate ld.real. Source Code Releases of elf2flt are pretty much never made. The typical model is for a current snapshot to be taken of the repository, integrated into the toolchain, and then never touched again. The repository is always kept in working order. The official elf2flt source can be found here: http://cvs.uclinux.org/cgi-bin/cvsweb.cgi/elf2flt/ For people who prefer git, a mirror has been created here: http://blackfin.uclinux.org/git/?p=users/vapier/elf2flt.git flthdr (FLAT Header) The flthdr utility allows you to tweak the header of FLAT files so as to tweak runtime parameters. Most often, people wish to increase the stack size, or tweak the compression settings. usage: flthdr [options] flat-file Allows you to change an existing flat file -p : print current settings -P : print relocations -z : compressed flat file -d : compressed data-only flat file -Z : un-compressed flat file -r : ram load -R : do not RAM load -k : kernel traced load (for debug) -K : normal non-kernel traced load -u : place stack in L1 scratchpad memory -U : place stack in normal SDRAM memory -s size : stack size -o file : output-file (default is to modify input file)