Optimize code if we have only one personality

On i386:
   text	   data	    bss	    dec	    hex	filename
 238025	    672	  18980	 257677	  3ee8d	strace.before
 237389	    704	  18944	 257037	  3ec0d	strace

* defs.h: Define PERSONALITY0_WORDSIZE as sizeof(long) if not defined.
Introduce new define, current_wordsize as
(personality_wordsize[current_personality]).
Make set_personality() no-op, current_personality constant zero,
current_wordsize as PERSONALITY0_WORDSIZE if we have only one personality.
* count.c (call_summary): Use current_wordsize instead of
personality_wordsize[current_personality].
* desc.c (printflock): Likewise.
* file.c (sys_utime): Likewise.
* io.c (tprint_iov): Likewise.
* process.c (printargv): Likewise.
* resource.c (decode_rlimit): Likewise.
* signal.c (sys_kill): Likewise.
(sys_rt_sigaction): Likewise.
* time.c (sprinttv): Likewise.
(sprint_timespec): Likewise.
(printitv_bitness): Likewise.
(tprint_timex): Likewise.
(printsigevent): Likewise.
* util.c (dumpiov): Likewise.
(umoven): Likewise.
(umovestr): Likewise.
* syscall.c: Initialize sysent to sysent0 etc.
Make current_personality, personality_wordsize[], set_personality()
conditional on SUPPORTED_PERSONALITIES > 1.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/syscall.c b/syscall.c
index 3f157b2..3ee4417 100644
--- a/syscall.c
+++ b/syscall.c
@@ -183,29 +183,25 @@
 int qual_flags2[MAX_QUALS];
 #endif
 
-const struct sysent *sysent;
-const char *const *errnoent;
-const char *const *signalent;
-const struct ioctlent *ioctlent;
-unsigned nsyscalls;
-unsigned nerrnos;
-unsigned nsignals;
-unsigned nioctlents;
-int *qual_flags;
+const struct sysent *sysent = sysent0;
+const char *const *errnoent = errnoent0;
+const char *const *signalent = signalent0;
+const struct ioctlent *ioctlent = ioctlent0;
+unsigned nsyscalls = nsyscalls0;
+unsigned nerrnos = nerrnos0;
+unsigned nsignals = nsignals0;
+unsigned nioctlents = nioctlents0;
+int *qual_flags = qual_flags0;
 
+#if SUPPORTED_PERSONALITIES > 1
 int current_personality;
 
-#ifndef PERSONALITY0_WORDSIZE
-# define PERSONALITY0_WORDSIZE sizeof(long)
-#endif
 const int personality_wordsize[SUPPORTED_PERSONALITIES] = {
 	PERSONALITY0_WORDSIZE,
-#if SUPPORTED_PERSONALITIES > 1
 	PERSONALITY1_WORDSIZE,
-#endif
-#if SUPPORTED_PERSONALITIES > 2
+# if SUPPORTED_PERSONALITIES > 2
 	PERSONALITY2_WORDSIZE,
-#endif
+# endif
 };
 
 void
@@ -224,7 +220,6 @@
 		qual_flags = qual_flags0;
 		break;
 
-#if SUPPORTED_PERSONALITIES >= 2
 	case 1:
 		errnoent = errnoent1;
 		nerrnos = nerrnos1;
@@ -236,9 +231,8 @@
 		nsignals = nsignals1;
 		qual_flags = qual_flags1;
 		break;
-#endif
 
-#if SUPPORTED_PERSONALITIES >= 3
+# if SUPPORTED_PERSONALITIES >= 3
 	case 2:
 		errnoent = errnoent2;
 		nerrnos = nerrnos2;
@@ -250,13 +244,12 @@
 		nsignals = nsignals2;
 		qual_flags = qual_flags2;
 		break;
-#endif
+# endif
 	}
 
 	current_personality = personality;
 }
 
-#if SUPPORTED_PERSONALITIES > 1
 static void
 update_personality(struct tcb *tcp, int personality)
 {
@@ -521,7 +514,7 @@
 	tcp->scno = SYS_socket_subcall + tcp->u_arg[0];
 	addr = tcp->u_arg[1];
 	tcp->u_nargs = sysent[tcp->scno].nargs;
-	size = personality_wordsize[current_personality];
+	size = current_wordsize;
 	for (i = 0; i < tcp->u_nargs; ++i) {
 		if (size == sizeof(int)) {
 			unsigned int arg;
@@ -685,8 +678,7 @@
  * other: error, trace_syscall() should print error indicator
  *    ("????" etc) and bail out.
  */
-static
-int
+static int
 get_scno(struct tcb *tcp)
 {
 	long scno = 0;
@@ -1682,7 +1674,7 @@
 {
 	unsigned long int max = -(long int) nerrnos;
 #if SUPPORTED_PERSONALITIES > 1
-	if (personality_wordsize[current_personality] < sizeof(val)) {
+	if (current_wordsize < sizeof(val)) {
 		val = (unsigned int) val;
 		max = (unsigned int) max;
 	}