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