extern __thread char bar[]; extern char size_of_bar asm ("bar@SIZE"); char *bar_size_1 = &size_of_bar; static char *bar_size_2 = &size_of_bar; char * bar_size1 (void) { bar[2] = 3; return bar_size_1; } char * bar_size2 (void) { return bar_size_2; } extern __thread char foo[]; extern char size_of_foo asm ("foo@SIZE"); char *foo_size_1 = &size_of_foo; static char *foo_size_2 = &size_of_foo; char * foo_size1 (void) { foo[3] = 4; return foo_size_1; } char * foo_size2 (void) { return foo_size_2; }