https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51628
--- Comment #49 from Sven <sven.koehler at gmail dot com> --- (In reply to W.H. Ding from comment #47) > Hi, everyone > > I wonder if this issue has to do with the bug-like problem I encountered > when accessing an unaligned stand-alone global variable (rather than a > member of a packed struct). A test case is as follows: > > char g_c = 'x'; > int g_d __attribute__((aligned(1))) = 13; > > int main(void) > { > g_c = 'z'; > //================ > g_d = 33; // Crash on, in my case, ARM Cortex-M0 > //================ > return 0; > } This doesn't work. The aligned attribute is for providing additional alignment hints. The GCC documentation clearly states, that aligned can increase the alignment. So g_d is still 4 byte aligned, and correctly so. Also, you cannot use the packed attribute (which reduces the alignment to 1) for simple types. You can only use it for structs. Try a packed struct that contains a single int. That will work.