From 3d101dd4670e449a064bd8ea88d5343d83144f49 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Mon, 19 Mar 2007 16:04:11 +0000 Subject: expand documentation --- docs/keep_data_small.txt | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'docs/keep_data_small.txt') diff --git a/docs/keep_data_small.txt b/docs/keep_data_small.txt index 66f92b321..fcd8df4a9 100644 --- a/docs/keep_data_small.txt +++ b/docs/keep_data_small.txt @@ -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. -- cgit v1.2.3