libbb: constify *bb_common_bufsiz1 (if it is compiled to be a pointer)
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 21 Apr 2016 19:47:45 +0000 (21:47 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 21 Apr 2016 19:47:45 +0000 (21:47 +0200)
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>
libbb/common_bufsiz.c
scripts/generate_BUFSIZ.sh

index 26faafcbbefb2ae9b2ef4822504b71bad0a7db44..1a35851691359b3657c9f78c3feb350ba1b44cf5 100644 (file)
@@ -58,11 +58,11 @@ char bb_common_bufsiz1[COMMON_BUFSIZE] ALIGNED(sizeof(long long));
  * 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
index d54142597570eb29fac39e095ca7f27f30601cf1..1914fa0f5818202616fdee298b2bcf58f2759dc3 100755 (executable)
@@ -77,7 +77,7 @@ if test $REM -lt 1024; then
        # 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: