[git commit] libbb: constify *bb_common_bufsiz1 (if it is compiled to be a pointer)

Denys Vlasenko vda.linux at googlemail.com
Thu Apr 21 19:47:45 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=93e1aaa1c7e5ed6d2704262700ec28837bdfc9b7
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

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 at googlemail.com>
---
 libbb/common_bufsiz.c      | 4 ++--
 scripts/generate_BUFSIZ.sh | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libbb/common_bufsiz.c b/libbb/common_bufsiz.c
index 26faafc..1a35851 100644
--- a/libbb/common_bufsiz.c
+++ b/libbb/common_bufsiz.c
@@ -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
diff --git a/scripts/generate_BUFSIZ.sh b/scripts/generate_BUFSIZ.sh
index d541425..1914fa0 100755
--- a/scripts/generate_BUFSIZ.sh
+++ b/scripts/generate_BUFSIZ.sh
@@ -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:


More information about the busybox-cvs mailing list