I discovered gdb's idea of how values are returned differed significantly from how gcc actually returned things. Although gcc might be at variance from the ABI specification, I didn't want to change gcc's behaviour and thereby introduce ABI incompatibilities there. AFAICT gcc's behaviour has been unchanged for a while. *) GCC passes smalls structs that have an integral mode in a register, not small structs per se. It is annoying that an implementation detail of gcc's internals is affecting the ABI this way. I've reproduced what I think is an equivalent algorithm, so gdb can determine this. *) GCC never sets %a0 to point to a returned structure. Neither does it return pointer values in %a0. *) coldfire chips really need the stack to be aligned to a 4 byte boundary. *) In order for bare metal elf to work, I've defaulted gdb's configuration to be that, and added an os initialization routine for a.out. *) I've enabled the linux sniffers for a uclinux target. tested on a coldfire target board bare metal. ok? nathan -- Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery nathan@codesourcery.com :: http://www.planetfall.pwp.blueyonder.co.uk