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."
So if you change your target choice for instance to 'arm-linux-gnueabi'
then you of course
can produce shared libraries (.so files) etc. for some "equivalent" own
operating system
which uses the same object format...