This lets gcc optimize much better:
text data bss dec hex filename
922846 910 13056 936812 e4b6c busybox_unstripped.nonconst
920255 910 13056 934221 e414d busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* It is not defined as a dummy macro.
* It means we have to provide this function.
*/
-char* bb_common_bufsiz1;
+char *const bb_common_bufsiz1 __attribute__ ((section (".data")));
void setup_common_bufsiz(void)
{
if (!bb_common_bufsiz1)
- bb_common_bufsiz1 = xzalloc(COMMON_BUFSIZE);
+ *(char**)&bb_common_bufsiz1 = xzalloc(COMMON_BUFSIZE);
}
# else
# ifndef bb_common_bufsiz1
# users will need to malloc it.
{
echo "enum { COMMON_BUFSIZE = 1024 };"
- echo "extern char *bb_common_bufsiz1;"
+ echo "extern char *const bb_common_bufsiz1;"
echo "void setup_common_bufsiz(void);"
} | regenerate "$common_bufsiz_h"
# Check that we aren't left with a buggy binary: