On 13.06.2013 18:48, Kai Ruottu wrote: > 13.6.2013 12:25, matti h kirjoitti: >> Hi, >> Im trying to implement a dynamic linker for M4 mcu's. >> But the generated code from gcc seems incorrect to me: im compiling >> using >> arm-none-eabi-gcc: -mcpu=cortex-m4 -mthumb -O2 -ggdb >> -Wstrict-prototypes >> -Wunused-parameter -lmylib main.c -o test > > For me this all looks insane :( > > I would expect the 'arm-eabi' target being purely static and not > knowing anything about > shared libraries and dynamic linking, something equivalent to the > 'arm-elf' target but with > somehow different object format. Meanwhile targets like 'arm-linux*', > 'arm-*bsd' etc. will > support dynamic linking. If we look at the Wikipedia page : > > http://en.wikipedia.org/wiki/Application_binary_interface > > there is told : > > "The main differences of an EABI with respect to an ABI for general > purpose operating > systems are that privileged instructions are allowed in application > code, dynamic linking > is not required (sometimes it is completely disallowed), and a more > compact stack frame > organization is used to save memory." /Not required/ doesn't mean /not desirable/ (though /disallowed/ implies). It also doesn't mean that EABI hinders dynamic object loading. An example is eCos (http://ecos.sourceware.org) that uses ARM EABI and yet supports dynamic object loading. Ilija