Maybe the startup code is faulty and/or the generated program header.
With old MiNT stack is odd at init(), that's what's jumped to by the kernel - normal apps have main() instead.
It's obvious that you could end with an odd pointer if either section has an odd length, not counting the fact that aligning the stack on 4 byte boundaries will help performance.
On modern MiNT it is on 4-byte-boundary. Maybe this is because Alan fixed MiNT to run on ST again. -- Helmut Karlowski