How do you compile a C program in to a valid ELF format(or RAW format) so that it can be executed directly from RAM without any OS? Assume that a bootloader exists which is capable of loading the code to any location in RAM and start execution at that address? To be precise , what should be the compiler(GCC) flags? Is there a need for a map file?
A sample helloworld application would be most welcome :)
Just to elaborate my point,
let the main() method be an empty infinite while loop to ensure that no OS specific or standard library calls are used. The desired o/p is a hang. With the usual GCC options the bootloader would definitely fail to load the executable telling it is invalid ELF format. However by passing -dN option to the linker will make it a valid ELF. More compiler/linker options are required to make it hang and not crash!! What exactly are those compiler options?
file.c:
int main()
{
while(1);
}
Compilation
gcc -c -nostdinc -fno-builtin file.c
ld -dN -nostdlib file.o
Bootloader loads a.out to RAM and executes.