assorted static vars removal

function                                             old     new   delta
tcpudpsvd_main                                      1829    1839     +10
update_status                                        567     569      +2
sigterm                                                1       -      -1
.........
dhcprelay_signal_handler                               8       -      -8
nfs_strerror                                          60      49     -11
singlemount                                         4579    4564     -15
static.p                                              16       -     -16
svstatus                                              20       -     -20
dhcprelay_xid_list                                    32       -     -32
runsv_main                                          1785    1746     -39
static.buf                                            74      28     -46
svd                                                   56       -     -56
dhcprelay_main                                      1141    1080     -61
------------------------------------------------------------------------------
(add/remove: 0/20 grow/shrink: 2/10 up/down: 12/-386)        Total: -374 bytes

diff --git a/runit/runsv.c b/runit/runsv.c
index b35c266..1ee3dda 100644
--- a/runit/runsv.c
+++ b/runit/runsv.c
@@ -61,8 +61,6 @@
 /* Compare possibly overflowing unsigned counters */
 #define LESS(a,b) ((int)((unsigned)(b) - (unsigned)(a)) > 0)
 
-static int selfpipe[2];
-
 /* state */
 #define S_DOWN 0
 #define S_RUN 1
@@ -88,12 +86,27 @@
 	int fdcontrolwrite;
 };
 
-static struct svdir svd[2];
-static smallint sigterm;
-static smallint haslog;
-static smallint pidchanged = 1;
-static int logpipe[2];
-static char *dir;
+struct globals {
+	smallint haslog;
+	smallint sigterm;
+	smallint pidchanged;
+	int selfpipe[2];
+	int logpipe[2];
+	char *dir;
+	struct svdir svd[2];
+};
+#define G (*(struct globals*)&bb_common_bufsiz1)
+#define haslog       (G.haslog      )
+#define sigterm      (G.sigterm     )
+#define pidchanged   (G.pidchanged  )
+#define selfpipe     (G.selfpipe    )
+#define logpipe      (G.logpipe     )
+#define dir          (G.dir         )
+#define svd          (G.svd         )
+#define INIT_G() \
+	do { \
+		pidchanged = 1; \
+	} while (0)
 
 static void fatal2_cannot(const char *m1, const char *m2)
 {
@@ -434,6 +447,8 @@
 	int r;
 	char buf[256];
 
+	INIT_G();
+
 	if (!argv[1] || argv[2])
 		bb_show_usage();
 	dir = argv[1];