I very much doubt that aligning should be on sizeof(datatype). I'd guess
that aligning is based on data bus size and old ST was 16-bit thus long
is word aligned on atari.
OK, but since both gcc (talking about the newest 4.x range!) and vbcc are fully 32bit compilers with no idea about ST bus size and with sizeof(int) = 4 I'd say this isn't the cause. I remember Vincent even forced align on 4 byte boundaries for every data/code section in binutils, this is the reason why I'm curious where it comes from...