svn commit: trunk/busybox/docs

vda at busybox.net vda at busybox.net
Wed Mar 21 10:07:01 UTC 2007


Author: vda
Date: 2007-03-21 03:07:01 -0700 (Wed, 21 Mar 2007)
New Revision: 18191

Log:
add info about gcc's sadistic alignment - and how to disable it


Modified:
   trunk/busybox/docs/keep_data_small.txt


Changeset:
Modified: trunk/busybox/docs/keep_data_small.txt
===================================================================
--- trunk/busybox/docs/keep_data_small.txt	2007-03-21 08:04:19 UTC (rev 18190)
+++ trunk/busybox/docs/keep_data_small.txt	2007-03-21 10:07:01 UTC (rev 18191)
@@ -178,5 +178,29 @@
 char vc31[31] = { 1 }; // unaligned
 char vc32[32] = { 1 }; // aligned to 32 bytes
 
--fpack-struct=1 reduces alignment of s28 to 1 (but probably will break layout
-of many libc structs) but s32 and vc32 are still aligned to 32 bytes.
+-fpack-struct=1 reduces alignment of s28 to 1 (but probably
+will break layout of many libc structs) but s32 and vc32
+are still aligned to 32 bytes.
+
+I will try to cook up a patch to add a gcc option for disabling it.
+Meanwhile, this is where it can be disabled in gcc source:
+
+gcc/config/i386/i386.c
+int
+ix86_data_alignment (tree type, int align)
+{
+#if 0
+  if (AGGREGATE_TYPE_P (type)
+       && TYPE_SIZE (type)
+       && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
+       && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 256
+           || TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 256)
+    return 256;
+#endif
+
+Result (non-static busybox built against glibc):
+
+# size /usr/srcdevel/bbox/fix/busybox.t0/busybox busybox
+   text    data     bss     dec     hex filename
+ 634416    2736   23856  661008   a1610 busybox
+ 632580    2672   22944  658196   a0b14 busybox_noalign




More information about the busybox-cvs mailing list