When you obtain the following error during a link:
file.o: linking files compiled for 16-bit integers (-mshort) \
and others for 32-bit integers
it means that you compiled or assembled one part of your project
with 32-bit integers and another part with 16-bit integers.
Since the ABI is different the linker complains. Such ABI incompatibility
was not detected by release 1.x. This error detection will prevent
you from strange execution errors like passing a 32-bit integer on
the stack while expecting a 16-bit integer. The function will only
see the high part only thus resulting in strange behavior. This error
is now detected for your safety.
In general this is caused by the fact that you assembled some file
with m6811-elf-as and you didn't pass the important -mshort flag to it. It is recommended to assemble with m6811-elf-gcc and pass the same flags as for a C or C++ compilation.
|