add some missed statics on constant objects.
fix few #ifndef ENABLE_xxx

# size busybox_old busybox_unstripped
   text    data     bss     dec     hex filename
 677152    2920   18208  698280   aa7a8 busybox_old
 676420    2920   18208  697548   aa4cc busybox_unstripped

diff --git a/coreutils/date.c b/coreutils/date.c
index dfc8b2f..d2d77f4 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -69,15 +69,15 @@
 		if (!isofmt_arg) {
 			ifmt = 0; /* default is date */
 		} else {
-			const char * const isoformats[] =
-				{"date", "hours", "minutes", "seconds"};
+			static const char * const isoformats[] =
+				{ "date", "hours", "minutes", "seconds" };
 
 			for (ifmt = 0; ifmt < 4; ifmt++)
-				if (!strcmp(isofmt_arg, isoformats[ifmt])) {
-					break;
-				}
-			if (ifmt == 4) /* parse error */
-				bb_show_usage();
+				if (!strcmp(isofmt_arg, isoformats[ifmt]))
+					goto found;
+			/* parse error */
+			bb_show_usage();
+ found: ;
 		}
 	}
 
@@ -207,7 +207,7 @@
 					date_fmt[i++] = '%';
 					date_fmt[i++] = 'S';
 				}
-format_utc:
+ format_utc:
 				date_fmt[i++] = '%';
 				date_fmt[i] = (opt & DATE_OPT_UTC) ? 'Z' : 'z';
 			}
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 518c5fe..4507b5e 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -75,7 +75,7 @@
 		trunc_flag   = 1 << 2,
 		twobufs_flag = 1 << 3,
 	};
-	const char * const keywords[] = {
+	static const char * const keywords[] = {
 		"bs=", "count=", "seek=", "skip=", "if=", "of=",
 #if ENABLE_FEATURE_DD_IBS_OBS
 		"ibs=", "obs=", "conv=", "notrunc", "sync", "noerror",
diff --git a/coreutils/expr.c b/coreutils/expr.c
index f75f6e0..b6bd383 100644
--- a/coreutils/expr.c
+++ b/coreutils/expr.c
@@ -278,7 +278,7 @@
 static VALUE *eval6(void)
 {
 	VALUE *l, *r, *v = NULL /* silence gcc */, *i1, *i2;
-	const char * const keywords[] = {
+	static const char * const keywords[] = {
 		"quote", "length", "match", "index", "substr", NULL
 	};
 
diff --git a/coreutils/stat.c b/coreutils/stat.c
index 397e395..7c56317 100644
--- a/coreutils/stat.c
+++ b/coreutils/stat.c
@@ -68,7 +68,7 @@
 static char const *human_fstype(long f_type)
 {
 	int i;
-	const struct types {
+	static const struct types {
 		long type;
 		const char * const fs;
 	} humantypes[] = {
@@ -109,13 +109,13 @@
 		{ 0x62656572, "sysfs" },
 		{ 0, "UNKNOWN" }
 	};
-	for (i=0; humantypes[i].type; ++i)
+	for (i = 0; humantypes[i].type; ++i)
 		if (humantypes[i].type == f_type)
 			break;
 	return humantypes[i].fs;
 }
 
-#ifdef CONFIG_FEATURE_STAT_FORMAT
+#if ENABLE_FEATURE_STAT_FORMAT
 /* print statfs info */
 static void print_statfs(char *pformat, const size_t buf_len, const char m,
 			 const char * const filename, void const *data
@@ -354,9 +354,9 @@
 		return 0;
 	}
 
-#ifdef CONFIG_FEATURE_STAT_FORMAT
+#if ENABLE_FEATURE_STAT_FORMAT
 	if (format == NULL)
-#ifndef ENABLE_SELINUX
+#if !ENABLE_SELINUX
 		format = (option_mask32 & OPT_TERSE
 			? "%n %i %l %t %s %b %f %a %c %d\n"
 			: "  File: \"%n\"\n"
@@ -460,9 +460,9 @@
 		return 0;
 	}
 
-#ifdef CONFIG_FEATURE_STAT_FORMAT
+#if ENABLE_FEATURE_STAT_FORMAT
 	if (format == NULL) {
-#ifndef ENABLE_SELINUX
+#if !ENABLE_SELINUX
 		if (option_mask32 & OPT_TERSE) {
 			format = "%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %o";
 		} else {
diff --git a/coreutils/stty.c b/coreutils/stty.c
index b13f1fb..7493192 100644
--- a/coreutils/stty.c
+++ b/coreutils/stty.c
@@ -388,7 +388,7 @@
 
 /* Return a string that is the printable representation of character CH */
 /* Adapted from 'cat' by Torbjorn Granlund */
-static const char *visible(unsigned int ch)
+static const char *visible(unsigned ch)
 {
 	char *bpout = G.buf;
 
@@ -561,18 +561,18 @@
 
 static int find_param(const char * const name)
 {
-	const char * const params[] = {
+	static const char * const params[] = {
 		"line",
 		"rows",
 		"cols",
 		"columns",
-		"size",
-		"speed",
+		"size",  /* 4 */
+		"speed", /* 5 */
 		"ispeed",
 		"ospeed",
 		NULL
 	};
-	smalluint i = index_in_str_array(params, name) + 1;
+	int i = index_in_str_array(params, name) + 1;
 	if (i == 0)
 		return 0;
 	if (!(i == 4 || i == 5))
@@ -584,7 +584,7 @@
 static int recover_mode(const char *arg, struct termios *mode)
 {
 	int i, n;
-	unsigned int chr;
+	unsigned chr;
 	unsigned long iflag, oflag, cflag, lflag;
 
 	/* Scan into temporaries since it is too much trouble to figure out
@@ -612,7 +612,7 @@
 }
 
 static void display_recoverable(const struct termios *mode,
-								const int ATTRIBUTE_UNUSED dummy)
+				int ATTRIBUTE_UNUSED dummy)
 {
 	int i;
 	printf("%lx:%lx:%lx:%lx",
@@ -975,7 +975,7 @@
 					goto invalid_argument;
 				}
 			}
-end_option:
+ end_option:
 			continue;
 		}
 
@@ -1031,7 +1031,7 @@
 		default:
 			if (recover_mode(arg, &mode) == 1) break;
 			if (tty_value_to_baud(xatou(arg)) != (speed_t) -1) break;
-invalid_argument:
+ invalid_argument:
 			bb_error_msg_and_die("invalid argument '%s'", arg);
 		}
 		stty_state &= ~STTY_noargs;
diff --git a/coreutils/tr.c b/coreutils/tr.c
index f72d23c..5d3dd4c 100644
--- a/coreutils/tr.c
+++ b/coreutils/tr.c
@@ -84,7 +84,7 @@
 	unsigned i; /* XXX: FIXME: use unsigned char? */
 	unsigned char ac;
 #define CLO ":]"
-	const char * const classes[] = {
+	static const char * const classes[] = {
 		"alpha"CLO, "alnum"CLO, "digit"CLO, "lower"CLO, "upper"CLO, "space"CLO,
 		"blank"CLO, "punct"CLO, "cntrl"CLO, NULL
 	};
diff --git a/shell/ash.c b/shell/ash.c
index a5ffaaf..950cdaa 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -6967,6 +6967,11 @@
 {
 	static char buf[16];
 
+//try this:
+//if (tok < TSEMI) return tokname_array[tok] + 1;
+//sprintf(buf, "\"%s\"", tokname_array[tok] + 1);
+//return buf;
+
 	if (tok >= TSEMI)
 		buf[0] = '"';
 	sprintf(buf + (tok >= TSEMI), "%s%c",
@@ -6978,15 +6983,15 @@
 static int
 pstrcmp(const void *a, const void *b)
 {
-	return strcmp((const char *) a, (*(const char *const *) b) + 1);
+	return strcmp((char*) a, (*(char**) b) + 1);
 }
 
 static const char *const *
 findkwd(const char *s)
 {
 	return bsearch(s, tokname_array + KWDOFFSET,
-			(sizeof(tokname_array) / sizeof(const char *)) - KWDOFFSET,
-			sizeof(const char *), pstrcmp);
+			(sizeof(tokname_array) / sizeof(char *)) - KWDOFFSET,
+			sizeof(char *), pstrcmp);
 }
 
 /*
diff --git a/shell/lash.c b/shell/lash.c
index 58d770f..192900b 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -716,11 +716,12 @@
 
 static int expand_arguments(char *command)
 {
+	static const char out_of_space[] = "out of space during expansion";
+
 	int total_length = 0, length, i, retval, ix = 0;
 	expand_t expand_result;
 	char *tmpcmd, *cmd, *cmd_copy;
 	char *src, *dst, *var;
-	const char * const out_of_space = "out of space during expansion";
 	int flags = GLOB_NOCHECK
 #ifdef GLOB_BRACE
 		| GLOB_BRACE
diff --git a/util-linux/ipcrm.c b/util-linux/ipcrm.c
index 9240e2c..d13fb83 100644
--- a/util-linux/ipcrm.c
+++ b/util-linux/ipcrm.c
@@ -154,7 +154,6 @@
 
 			if (id < 0) {
 				const char *errmsg;
-				const char *const what = "key";
 
 				error++;
 				switch (errno) {
@@ -171,7 +170,7 @@
 					errmsg = "unknown error in";
 					break;
 				}
-				bb_error_msg("%s %s (%s)",  errmsg, what, optarg);
+				bb_error_msg("%s %s (%s)", errmsg, "key", optarg);
 				continue;
 			}
 		} else {
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 4a02371..bc1c0d4 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -891,7 +891,7 @@
 	for (opt = strtok(filteropts, ","); opt; opt = strtok(NULL, ",")) {
 		char *opteq = strchr(opt, '=');
 		if (opteq) {
-			const char *const options[] = {
+			static const char *const options[] = {
 				/* 0 */ "rsize",
 				/* 1 */ "wsize",
 				/* 2 */ "timeo",
@@ -996,7 +996,7 @@
 			}
 		}
 		else {
-			const char *const options[] = {
+			static const char *const options[] = {
 				"bg",
 				"fg",
 				"soft",