expand documentation
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 19 Mar 2007 16:04:11 +0000 (16:04 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 19 Mar 2007 16:04:11 +0000 (16:04 -0000)
docs/keep_data_small.txt

index 66f92b32105725a7bdb6d9d71cc1cc3184b6f120..fcd8df4a93877ed1c9d0dde4d535bd4964f741bd 100644 (file)
@@ -125,3 +125,32 @@ less readable, use #defines:
 If applet doesn't use much of global data, converting it to use
 one of above methods is not worth the resulting code obfuscation.
 If you have less than ~300 bytes of global data - don't bother.
+
+
+               gcc's data alignment problem
+
+The following attribute added in vi.c:
+
+static int tabstop;
+static struct termios term_orig __attribute__ ((aligned (4)));
+static struct termios term_vi __attribute__ ((aligned (4)));
+
+reduced bss size by 32 bytes, because gcc sometimes aligns structures to
+ridiculously large values. asm output diff for above example:
+
+ tabstop:
+        .zero   4
+        .section        .bss.term_orig,"aw",@nobits
+-       .align 32
++       .align 4
+        .type   term_orig, @object
+        .size   term_orig, 60
+ term_orig:
+        .zero   60
+        .section        .bss.term_vi,"aw",@nobits
+-       .align 32
++       .align 4
+        .type   term_vi, @object
+        .size   term_vi, 60
+
+gcc doesn't seem to have options for altering this behaviour.