aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-02-04 15:00:15 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-02-04 15:00:15 +0100
commit98a4c7cf3d799ab953cb77e8b34597c73e3e7335 (patch)
tree2d9c07825697cd7c6e96647ff0992dce4d4a0115
parent1821d188ca674b42bf0f384b0c2332ff95701bba (diff)
downloadbusybox-w32-98a4c7cf3d799ab953cb77e8b34597c73e3e7335.tar.gz
busybox-w32-98a4c7cf3d799ab953cb77e8b34597c73e3e7335.tar.bz2
busybox-w32-98a4c7cf3d799ab953cb77e8b34597c73e3e7335.zip
*: suppress ~60% of "aliased warnings" on gcc-4.4.1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--archival/libunarchive/get_header_tar.c10
-rw-r--r--archival/lzop.c2
-rw-r--r--console-tools/resize.c10
-rw-r--r--coreutils/dd.c2
-rw-r--r--coreutils/du.c2
-rw-r--r--coreutils/expr.c2
-rw-r--r--coreutils/ls.c2
-rw-r--r--coreutils/stty.c2
-rw-r--r--coreutils/tail.c2
-rw-r--r--debianutils/run_parts.c2
-rw-r--r--debianutils/start_stop_daemon.c2
-rw-r--r--editors/awk.c2
-rw-r--r--editors/sed.c2
-rw-r--r--findutils/find.c2
-rw-r--r--findutils/grep.c2
-rw-r--r--include/platform.h7
-rw-r--r--miscutils/crond.c2
-rw-r--r--miscutils/dc.c2
-rw-r--r--miscutils/hdparm.c2
-rw-r--r--modutils/modprobe.c2
-rw-r--r--modutils/modutils-24.c3
-rw-r--r--networking/arp.c2
-rw-r--r--networking/arping.c2
-rw-r--r--networking/ftpd.c2
-rw-r--r--networking/ftpgetput.c2
-rw-r--r--networking/ifupdown.c2
-rw-r--r--networking/inetd.c2
-rw-r--r--networking/ping.c2
-rw-r--r--networking/slattach.c2
-rw-r--r--networking/tc.c3
-rw-r--r--networking/tcpudp.c2
-rw-r--r--networking/telnet.c2
-rw-r--r--networking/telnetd.c2
-rw-r--r--networking/tftp.c2
-rw-r--r--networking/wget.c2
-rw-r--r--networking/zcip.c2
-rw-r--r--procps/ps.c2
-rw-r--r--procps/top.c4
-rw-r--r--runit/runsv.c2
-rw-r--r--runit/runsvdir.c2
-rw-r--r--runit/sv.c2
-rw-r--r--runit/svlogd.c2
-rw-r--r--selinux/setfiles.c3
-rw-r--r--sysklogd/logread.c2
-rw-r--r--util-linux/fsck_minix.c1
-rw-r--r--util-linux/mdev.c2
-rw-r--r--util-linux/more.c2
-rw-r--r--util-linux/mount.c2
-rw-r--r--util-linux/swaponoff.c2
49 files changed, 65 insertions, 58 deletions
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c
index 982404d14..d5b86ff5c 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -14,6 +14,10 @@
14#include "libbb.h" 14#include "libbb.h"
15#include "unarchive.h" 15#include "unarchive.h"
16 16
17typedef uint32_t aliased_uint32_t FIX_ALIASING;
18typedef off_t aliased_off_t FIX_ALIASING;
19
20
17/* 21/*
18 * GNU tar uses "base-256 encoding" for very large numbers (>8 billion). 22 * GNU tar uses "base-256 encoding" for very large numbers (>8 billion).
19 * Encoding is binary, with highest bit always set as a marker 23 * Encoding is binary, with highest bit always set as a marker
@@ -68,10 +72,10 @@ static off_t getBase256_len12(const char *str)
68 * and fetch it in one go: 72 * and fetch it in one go:
69 */ 73 */
70 if (sizeof(off_t) == 8) { 74 if (sizeof(off_t) == 8) {
71 value = *(off_t*)str; 75 value = *(aliased_off_t*)str;
72 value = SWAP_BE64(value); 76 value = SWAP_BE64(value);
73 } else if (sizeof(off_t) == 4) { 77 } else if (sizeof(off_t) == 4) {
74 value = *(off_t*)str; 78 value = *(aliased_off_t*)str;
75 value = SWAP_BE32(value); 79 value = SWAP_BE32(value);
76 } else { 80 } else {
77 value = 0; 81 value = 0;
@@ -156,7 +160,7 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
156 160
157#if ENABLE_DESKTOP || ENABLE_FEATURE_TAR_AUTODETECT 161#if ENABLE_DESKTOP || ENABLE_FEATURE_TAR_AUTODETECT
158 /* to prevent misdetection of bz2 sig */ 162 /* to prevent misdetection of bz2 sig */
159 *(uint32_t*)(&tar) = 0; 163 *(aliased_uint32_t*)&tar = 0;
160 i = full_read(archive_handle->src_fd, &tar, 512); 164 i = full_read(archive_handle->src_fd, &tar, 512);
161 /* If GNU tar sees EOF in above read, it says: 165 /* If GNU tar sees EOF in above read, it says:
162 * "tar: A lone zero block at N", where N = kilobyte 166 * "tar: A lone zero block at N", where N = kilobyte
diff --git a/archival/lzop.c b/archival/lzop.c
index a752a9d89..0a15c51aa 100644
--- a/archival/lzop.c
+++ b/archival/lzop.c
@@ -396,7 +396,7 @@ struct globals {
396 const uint32_t *lzo_crc32_table; 396 const uint32_t *lzo_crc32_table;
397 chksum_t chksum_in; 397 chksum_t chksum_in;
398 chksum_t chksum_out; 398 chksum_t chksum_out;
399}; 399} FIX_ALIASING;
400#define G (*(struct globals*)&bb_common_bufsiz1) 400#define G (*(struct globals*)&bb_common_bufsiz1)
401#define INIT_G() do { } while (0) 401#define INIT_G() do { } while (0)
402//#define G (*ptr_to_globals) 402//#define G (*ptr_to_globals)
diff --git a/console-tools/resize.c b/console-tools/resize.c
index 4504cc85d..828b5bb42 100644
--- a/console-tools/resize.c
+++ b/console-tools/resize.c
@@ -11,12 +11,12 @@
11 11
12#define ESC "\033" 12#define ESC "\033"
13 13
14#define old_termios (*(struct termios*)&bb_common_bufsiz1) 14#define old_termios_p ((struct termios*)&bb_common_bufsiz1)
15 15
16static void 16static void
17onintr(int sig UNUSED_PARAM) 17onintr(int sig UNUSED_PARAM)
18{ 18{
19 tcsetattr(STDERR_FILENO, TCSANOW, &old_termios); 19 tcsetattr(STDERR_FILENO, TCSANOW, old_termios_p);
20 exit(EXIT_FAILURE); 20 exit(EXIT_FAILURE);
21} 21}
22 22
@@ -33,8 +33,8 @@ int resize_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
33 * and operate on it - should we do the same? 33 * and operate on it - should we do the same?
34 */ 34 */
35 35
36 tcgetattr(STDERR_FILENO, &old_termios); /* fiddle echo */ 36 tcgetattr(STDERR_FILENO, old_termios_p); /* fiddle echo */
37 new = old_termios; 37 memcpy(&new, old_termios_p, sizeof(new));
38 new.c_cflag |= (CLOCAL | CREAD); 38 new.c_cflag |= (CLOCAL | CREAD);
39 new.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); 39 new.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
40 bb_signals(0 40 bb_signals(0
@@ -61,7 +61,7 @@ int resize_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
61 * (gotten via TIOCGWINSZ) and recomputing *pixel values */ 61 * (gotten via TIOCGWINSZ) and recomputing *pixel values */
62 ret = ioctl(STDERR_FILENO, TIOCSWINSZ, &w); 62 ret = ioctl(STDERR_FILENO, TIOCSWINSZ, &w);
63 63
64 tcsetattr(STDERR_FILENO, TCSANOW, &old_termios); 64 tcsetattr(STDERR_FILENO, TCSANOW, old_termios_p);
65 65
66 if (ENABLE_FEATURE_RESIZE_PRINT) 66 if (ENABLE_FEATURE_RESIZE_PRINT)
67 printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;\n", 67 printf("COLUMNS=%d;LINES=%d;export COLUMNS LINES;\n",
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 8173d403d..7c1a0c0df 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -38,7 +38,7 @@ struct globals {
38 unsigned long long total_bytes; 38 unsigned long long total_bytes;
39 unsigned long long begin_time_us; 39 unsigned long long begin_time_us;
40#endif 40#endif
41}; 41} FIX_ALIASING;
42#define G (*(struct globals*)&bb_common_bufsiz1) 42#define G (*(struct globals*)&bb_common_bufsiz1)
43#define INIT_G() do { \ 43#define INIT_G() do { \
44 /* we have to zero it out because of NOEXEC */ \ 44 /* we have to zero it out because of NOEXEC */ \
diff --git a/coreutils/du.c b/coreutils/du.c
index 730d6d162..5894ed438 100644
--- a/coreutils/du.c
+++ b/coreutils/du.c
@@ -50,7 +50,7 @@ struct globals {
50 int slink_depth; 50 int slink_depth;
51 int du_depth; 51 int du_depth;
52 dev_t dir_dev; 52 dev_t dir_dev;
53}; 53} FIX_ALIASING;
54#define G (*(struct globals*)&bb_common_bufsiz1) 54#define G (*(struct globals*)&bb_common_bufsiz1)
55 55
56 56
diff --git a/coreutils/expr.c b/coreutils/expr.c
index f5701a460..f40edad4e 100644
--- a/coreutils/expr.c
+++ b/coreutils/expr.c
@@ -63,7 +63,7 @@ typedef struct valinfo VALUE;
63/* The arguments given to the program, minus the program name. */ 63/* The arguments given to the program, minus the program name. */
64struct globals { 64struct globals {
65 char **args; 65 char **args;
66}; 66} FIX_ALIASING;
67#define G (*(struct globals*)&bb_common_bufsiz1) 67#define G (*(struct globals*)&bb_common_bufsiz1)
68 68
69/* forward declarations */ 69/* forward declarations */
diff --git a/coreutils/ls.c b/coreutils/ls.c
index d004ce8b1..1197f7d71 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -255,7 +255,7 @@ struct globals {
255 /* Do time() just once. Saves one syscall per file for "ls -l" */ 255 /* Do time() just once. Saves one syscall per file for "ls -l" */
256 time_t current_time_t; 256 time_t current_time_t;
257#endif 257#endif
258}; 258} FIX_ALIASING;
259#define G (*(struct globals*)&bb_common_bufsiz1) 259#define G (*(struct globals*)&bb_common_bufsiz1)
260#if ENABLE_FEATURE_LS_COLOR 260#if ENABLE_FEATURE_LS_COLOR
261# define show_color (G.show_color ) 261# define show_color (G.show_color )
diff --git a/coreutils/stty.c b/coreutils/stty.c
index 4952d53d3..c40d718af 100644
--- a/coreutils/stty.c
+++ b/coreutils/stty.c
@@ -625,7 +625,7 @@ struct globals {
625 /* Current position, to know when to wrap */ 625 /* Current position, to know when to wrap */
626 unsigned current_col; 626 unsigned current_col;
627 char buf[10]; 627 char buf[10];
628}; 628} FIX_ALIASING;
629#define G (*(struct globals*)&bb_common_bufsiz1) 629#define G (*(struct globals*)&bb_common_bufsiz1)
630#define INIT_G() do { \ 630#define INIT_G() do { \
631 G.device_name = bb_msg_standard_input; \ 631 G.device_name = bb_msg_standard_input; \
diff --git a/coreutils/tail.c b/coreutils/tail.c
index 0be166315..83768d420 100644
--- a/coreutils/tail.c
+++ b/coreutils/tail.c
@@ -35,7 +35,7 @@ static const struct suffix_mult tail_suffixes[] = {
35 35
36struct globals { 36struct globals {
37 bool status; 37 bool status;
38}; 38} FIX_ALIASING;
39#define G (*(struct globals*)&bb_common_bufsiz1) 39#define G (*(struct globals*)&bb_common_bufsiz1)
40 40
41static void tail_xprint_header(const char *fmt, const char *filename) 41static void tail_xprint_header(const char *fmt, const char *filename)
diff --git a/debianutils/run_parts.c b/debianutils/run_parts.c
index ea019c27c..2854a539c 100644
--- a/debianutils/run_parts.c
+++ b/debianutils/run_parts.c
@@ -36,7 +36,7 @@ struct globals {
36 char **names; 36 char **names;
37 int cur; 37 int cur;
38 char *cmd[1]; 38 char *cmd[1];
39}; 39} FIX_ALIASING;
40#define G (*(struct globals*)&bb_common_bufsiz1) 40#define G (*(struct globals*)&bb_common_bufsiz1)
41#define names (G.names) 41#define names (G.names)
42#define cur (G.cur ) 42#define cur (G.cur )
diff --git a/debianutils/start_stop_daemon.c b/debianutils/start_stop_daemon.c
index 10da8dce4..dfc72f01a 100644
--- a/debianutils/start_stop_daemon.c
+++ b/debianutils/start_stop_daemon.c
@@ -96,7 +96,7 @@ struct globals {
96 char *pidfile; 96 char *pidfile;
97 int user_id; 97 int user_id;
98 smallint signal_nr; 98 smallint signal_nr;
99}; 99} FIX_ALIASING;
100#define G (*(struct globals*)&bb_common_bufsiz1) 100#define G (*(struct globals*)&bb_common_bufsiz1)
101#define found (G.found ) 101#define found (G.found )
102#define userspec (G.userspec ) 102#define userspec (G.userspec )
diff --git a/editors/awk.c b/editors/awk.c
index bc8b0dad1..a6f3f55f7 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -444,7 +444,7 @@ struct globals2 {
444 444
445 /* biggest and least used members go last */ 445 /* biggest and least used members go last */
446 tsplitter fsplitter, rsplitter; 446 tsplitter fsplitter, rsplitter;
447}; 447}; //FIX_ALIASING; - large code growth
448#define G1 (ptr_to_globals[-1]) 448#define G1 (ptr_to_globals[-1])
449#define G (*(struct globals2 *)ptr_to_globals) 449#define G (*(struct globals2 *)ptr_to_globals)
450/* For debug. nm --size-sort awk.o | grep -vi ' [tr] ' */ 450/* For debug. nm --size-sort awk.o | grep -vi ' [tr] ' */
diff --git a/editors/sed.c b/editors/sed.c
index fd9dd1be6..e5e187725 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -117,7 +117,7 @@ struct globals {
117 int idx; /* Space used */ 117 int idx; /* Space used */
118 int len; /* Space allocated */ 118 int len; /* Space allocated */
119 } pipeline; 119 } pipeline;
120}; 120} FIX_ALIASING;
121#define G (*(struct globals*)&bb_common_bufsiz1) 121#define G (*(struct globals*)&bb_common_bufsiz1)
122void BUG_sed_globals_too_big(void); 122void BUG_sed_globals_too_big(void);
123#define INIT_G() do { \ 123#define INIT_G() do { \
diff --git a/findutils/find.c b/findutils/find.c
index b417123f6..4bc3b38dc 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -104,7 +104,7 @@ struct globals {
104 action ***actions; 104 action ***actions;
105 bool need_print; 105 bool need_print;
106 recurse_flags_t recurse_flags; 106 recurse_flags_t recurse_flags;
107}; 107} FIX_ALIASING;
108#define G (*(struct globals*)&bb_common_bufsiz1) 108#define G (*(struct globals*)&bb_common_bufsiz1)
109#define INIT_G() do { \ 109#define INIT_G() do { \
110 struct G_sizecheck { \ 110 struct G_sizecheck { \
diff --git a/findutils/grep.c b/findutils/grep.c
index 193b48c11..a321cc31b 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -111,7 +111,7 @@ struct globals {
111 /* globals used internally */ 111 /* globals used internally */
112 llist_t *pattern_head; /* growable list of patterns to match */ 112 llist_t *pattern_head; /* growable list of patterns to match */
113 const char *cur_file; /* the current file we are reading */ 113 const char *cur_file; /* the current file we are reading */
114}; 114} FIX_ALIASING;
115#define G (*(struct globals*)&bb_common_bufsiz1) 115#define G (*(struct globals*)&bb_common_bufsiz1)
116#define INIT_G() do { \ 116#define INIT_G() do { \
117 struct G_sizecheck { \ 117 struct G_sizecheck { \
diff --git a/include/platform.h b/include/platform.h
index b58b14936..ab4402e79 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -100,6 +100,13 @@
100# define EXTERNALLY_VISIBLE 100# define EXTERNALLY_VISIBLE
101#endif 101#endif
102 102
103/* At 4.4 gcc become much more anal about this, need to use "aliased" types */
104#if __GNUC_PREREQ(4,4)
105# define FIX_ALIASING __attribute__((__may_alias__))
106#else
107# define FIX_ALIASING
108#endif
109
103/* We use __extension__ in some places to suppress -pedantic warnings 110/* We use __extension__ in some places to suppress -pedantic warnings
104 about GCC extensions. This feature didn't work properly before 111 about GCC extensions. This feature didn't work properly before
105 gcc 2.8. */ 112 gcc 2.8. */
diff --git a/miscutils/crond.c b/miscutils/crond.c
index 7135e4475..ebd48121d 100644
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -94,7 +94,7 @@ struct globals {
94 char *env_var_user; 94 char *env_var_user;
95 char *env_var_home; 95 char *env_var_home;
96#endif 96#endif
97}; 97} FIX_ALIASING;
98#define G (*(struct globals*)&bb_common_bufsiz1) 98#define G (*(struct globals*)&bb_common_bufsiz1)
99#define LogLevel (G.LogLevel ) 99#define LogLevel (G.LogLevel )
100#define LogFile (G.LogFile ) 100#define LogFile (G.LogFile )
diff --git a/miscutils/dc.c b/miscutils/dc.c
index 7348ed349..cb4b1e9b1 100644
--- a/miscutils/dc.c
+++ b/miscutils/dc.c
@@ -13,7 +13,7 @@ struct globals {
13 unsigned pointer; 13 unsigned pointer;
14 unsigned base; 14 unsigned base;
15 double stack[1]; 15 double stack[1];
16}; 16} FIX_ALIASING;
17enum { STACK_SIZE = (COMMON_BUFSIZE - offsetof(struct globals, stack)) / sizeof(double) }; 17enum { STACK_SIZE = (COMMON_BUFSIZE - offsetof(struct globals, stack)) / sizeof(double) };
18#define G (*(struct globals*)&bb_common_bufsiz1) 18#define G (*(struct globals*)&bb_common_bufsiz1)
19#define pointer (G.pointer ) 19#define pointer (G.pointer )
diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c
index 399b77a4a..9738620fd 100644
--- a/miscutils/hdparm.c
+++ b/miscutils/hdparm.c
@@ -315,7 +315,7 @@ struct globals {
315#ifdef DO_FLUSHCACHE 315#ifdef DO_FLUSHCACHE
316 unsigned char flushcache[4] = { WIN_FLUSHCACHE, 0, 0, 0 }; 316 unsigned char flushcache[4] = { WIN_FLUSHCACHE, 0, 0, 0 };
317#endif 317#endif
318}; 318} FIX_ALIASING;
319#define G (*(struct globals*)&bb_common_bufsiz1) 319#define G (*(struct globals*)&bb_common_bufsiz1)
320struct BUG_G_too_big { 320struct BUG_G_too_big {
321 char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1]; 321 char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index f339fbdbe..292f2df22 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -70,7 +70,7 @@ struct globals {
70 int num_unresolved_deps; 70 int num_unresolved_deps;
71 /* bool. "Did we have 'symbol:FOO' requested on cmdline?" */ 71 /* bool. "Did we have 'symbol:FOO' requested on cmdline?" */
72 smallint need_symbols; 72 smallint need_symbols;
73}; 73} FIX_ALIASING;
74#define G (*(struct globals*)&bb_common_bufsiz1) 74#define G (*(struct globals*)&bb_common_bufsiz1)
75#define INIT_G() do { } while (0) 75#define INIT_G() do { } while (0)
76 76
diff --git a/modutils/modutils-24.c b/modutils/modutils-24.c
index 442e80f2f..05c1bf2b2 100644
--- a/modutils/modutils-24.c
+++ b/modutils/modutils-24.c
@@ -3203,6 +3203,7 @@ static int obj_create_image(struct obj_file *f, char *image)
3203 3203
3204static struct obj_file *obj_load(char *image, size_t image_size, int loadprogbits) 3204static struct obj_file *obj_load(char *image, size_t image_size, int loadprogbits)
3205{ 3205{
3206 typedef uint32_t aliased_uint32_t FIX_ALIASING;
3206#if BB_LITTLE_ENDIAN 3207#if BB_LITTLE_ENDIAN
3207# define ELFMAG_U32 ((uint32_t)(ELFMAG0 + 0x100 * (ELFMAG1 + (0x100 * (ELFMAG2 + 0x100 * ELFMAG3))))) 3208# define ELFMAG_U32 ((uint32_t)(ELFMAG0 + 0x100 * (ELFMAG1 + (0x100 * (ELFMAG2 + 0x100 * ELFMAG3)))))
3208#else 3209#else
@@ -3224,7 +3225,7 @@ static struct obj_file *obj_load(char *image, size_t image_size, int loadprogbit
3224 bb_error_msg_and_die("error while loading ELF header"); 3225 bb_error_msg_and_die("error while loading ELF header");
3225 memcpy(&f->header, image, sizeof(f->header)); 3226 memcpy(&f->header, image, sizeof(f->header));
3226 3227
3227 if (*(uint32_t*)(&f->header.e_ident) != ELFMAG_U32) { 3228 if (*(aliased_uint32_t*)(&f->header.e_ident) != ELFMAG_U32) {
3228 bb_error_msg_and_die("not an ELF file"); 3229 bb_error_msg_and_die("not an ELF file");
3229 } 3230 }
3230 if (f->header.e_ident[EI_CLASS] != ELFCLASSM 3231 if (f->header.e_ident[EI_CLASS] != ELFCLASSM
diff --git a/networking/arp.c b/networking/arp.c
index 278f2dc9a..0ef267a35 100644
--- a/networking/arp.c
+++ b/networking/arp.c
@@ -51,7 +51,7 @@ struct globals {
51 const char *device; /* current device */ 51 const char *device; /* current device */
52 smallint hw_set; /* flag if hw-type was set (-H) */ 52 smallint hw_set; /* flag if hw-type was set (-H) */
53 53
54}; 54} FIX_ALIASING;
55#define G (*(struct globals*)&bb_common_bufsiz1) 55#define G (*(struct globals*)&bb_common_bufsiz1)
56#define ap (G.ap ) 56#define ap (G.ap )
57#define hw (G.hw ) 57#define hw (G.hw )
diff --git a/networking/arping.c b/networking/arping.c
index e3418a945..effe418a6 100644
--- a/networking/arping.c
+++ b/networking/arping.c
@@ -45,7 +45,7 @@ struct globals {
45 unsigned received; 45 unsigned received;
46 unsigned brd_recv; 46 unsigned brd_recv;
47 unsigned req_recv; 47 unsigned req_recv;
48}; 48} FIX_ALIASING;
49#define G (*(struct globals*)&bb_common_bufsiz1) 49#define G (*(struct globals*)&bb_common_bufsiz1)
50#define src (G.src ) 50#define src (G.src )
51#define dst (G.dst ) 51#define dst (G.dst )
diff --git a/networking/ftpd.c b/networking/ftpd.c
index b7d5b20b1..186ff50ce 100644
--- a/networking/ftpd.c
+++ b/networking/ftpd.c
@@ -106,7 +106,7 @@ struct globals {
106 /* We need these aligned to uint32_t */ 106 /* We need these aligned to uint32_t */
107 char msg_ok [(sizeof("NNN " MSG_OK ) + 3) & 0xfffc]; 107 char msg_ok [(sizeof("NNN " MSG_OK ) + 3) & 0xfffc];
108 char msg_err[(sizeof("NNN " MSG_ERR) + 3) & 0xfffc]; 108 char msg_err[(sizeof("NNN " MSG_ERR) + 3) & 0xfffc];
109}; 109} FIX_ALIASING;
110#define G (*(struct globals*)&bb_common_bufsiz1) 110#define G (*(struct globals*)&bb_common_bufsiz1)
111#define INIT_G() do { \ 111#define INIT_G() do { \
112 /* Moved to main */ \ 112 /* Moved to main */ \
diff --git a/networking/ftpgetput.c b/networking/ftpgetput.c
index 2dd7e9232..120ccff83 100644
--- a/networking/ftpgetput.c
+++ b/networking/ftpgetput.c
@@ -23,7 +23,7 @@ struct globals {
23 int verbose_flag; 23 int verbose_flag;
24 int do_continue; 24 int do_continue;
25 char buf[1]; /* actually [BUFSZ] */ 25 char buf[1]; /* actually [BUFSZ] */
26}; 26} FIX_ALIASING;
27#define G (*(struct globals*)&bb_common_bufsiz1) 27#define G (*(struct globals*)&bb_common_bufsiz1)
28enum { BUFSZ = COMMON_BUFSIZE - offsetof(struct globals, buf) }; 28enum { BUFSZ = COMMON_BUFSIZE - offsetof(struct globals, buf) };
29struct BUG_G_too_big { 29struct BUG_G_too_big {
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 51b36263f..bf88b1c19 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -106,7 +106,7 @@ enum {
106struct globals { 106struct globals {
107 char **my_environ; 107 char **my_environ;
108 const char *startup_PATH; 108 const char *startup_PATH;
109}; 109} FIX_ALIASING;
110#define G (*(struct globals*)&bb_common_bufsiz1) 110#define G (*(struct globals*)&bb_common_bufsiz1)
111#define INIT_G() do { } while (0) 111#define INIT_G() do { } while (0)
112 112
diff --git a/networking/inetd.c b/networking/inetd.c
index a45573396..7aa6b7b19 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -313,7 +313,7 @@ struct globals {
313 fd_set allsock; 313 fd_set allsock;
314 /* Used in next_line(), and as scratch read buffer */ 314 /* Used in next_line(), and as scratch read buffer */
315 char line[256]; /* _at least_ 256, see LINE_SIZE */ 315 char line[256]; /* _at least_ 256, see LINE_SIZE */
316}; 316} FIX_ALIASING;
317#define G (*(struct globals*)&bb_common_bufsiz1) 317#define G (*(struct globals*)&bb_common_bufsiz1)
318enum { LINE_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line) }; 318enum { LINE_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line) };
319struct BUG_G_too_big { 319struct BUG_G_too_big {
diff --git a/networking/ping.c b/networking/ping.c
index 23b39f2e2..467b7f694 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -263,7 +263,7 @@ struct globals {
263#endif 263#endif
264 } pingaddr; 264 } pingaddr;
265 char rcvd_tbl[MAX_DUP_CHK / 8]; 265 char rcvd_tbl[MAX_DUP_CHK / 8];
266}; 266} FIX_ALIASING;
267#define G (*(struct globals*)&bb_common_bufsiz1) 267#define G (*(struct globals*)&bb_common_bufsiz1)
268#define pingsock (G.pingsock ) 268#define pingsock (G.pingsock )
269#define if_index (G.if_index ) 269#define if_index (G.if_index )
diff --git a/networking/slattach.c b/networking/slattach.c
index d3212bb40..12a3067de 100644
--- a/networking/slattach.c
+++ b/networking/slattach.c
@@ -20,7 +20,7 @@ struct globals {
20 int handle; 20 int handle;
21 int saved_disc; 21 int saved_disc;
22 struct termios saved_state; 22 struct termios saved_state;
23}; 23} FIX_ALIASING;
24#define G (*(struct globals*)&bb_common_bufsiz1) 24#define G (*(struct globals*)&bb_common_bufsiz1)
25#define handle (G.handle ) 25#define handle (G.handle )
26#define saved_disc (G.saved_disc ) 26#define saved_disc (G.saved_disc )
diff --git a/networking/tc.c b/networking/tc.c
index 541a0f8f4..6a5a8504f 100644
--- a/networking/tc.c
+++ b/networking/tc.c
@@ -43,8 +43,7 @@ struct globals {
43 __u32 filter_parent; 43 __u32 filter_parent;
44 __u32 filter_prio; 44 __u32 filter_prio;
45 __u32 filter_proto; 45 __u32 filter_proto;
46}; 46} FIX_ALIASING;
47
48#define G (*(struct globals*)&bb_common_bufsiz1) 47#define G (*(struct globals*)&bb_common_bufsiz1)
49#define filter_ifindex (G.filter_ifindex) 48#define filter_ifindex (G.filter_ifindex)
50#define filter_qdisc (G.filter_qdisc) 49#define filter_qdisc (G.filter_qdisc)
diff --git a/networking/tcpudp.c b/networking/tcpudp.c
index d0db33b79..42845df0e 100644
--- a/networking/tcpudp.c
+++ b/networking/tcpudp.c
@@ -50,7 +50,7 @@ struct globals {
50 unsigned cmax; 50 unsigned cmax;
51 char **env_cur; 51 char **env_cur;
52 char *env_var[1]; /* actually bigger */ 52 char *env_var[1]; /* actually bigger */
53}; 53} FIX_ALIASING;
54#define G (*(struct globals*)&bb_common_bufsiz1) 54#define G (*(struct globals*)&bb_common_bufsiz1)
55#define verbose (G.verbose ) 55#define verbose (G.verbose )
56#define max_per_host (G.max_per_host) 56#define max_per_host (G.max_per_host)
diff --git a/networking/telnet.c b/networking/telnet.c
index 013d959a1..344bb0daa 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -75,7 +75,7 @@ struct globals {
75 char iacbuf[IACBUFSIZE]; 75 char iacbuf[IACBUFSIZE];
76 struct termios termios_def; 76 struct termios termios_def;
77 struct termios termios_raw; 77 struct termios termios_raw;
78}; 78} FIX_ALIASING;
79#define G (*(struct globals*)&bb_common_bufsiz1) 79#define G (*(struct globals*)&bb_common_bufsiz1)
80#define INIT_G() do { \ 80#define INIT_G() do { \
81 struct G_sizecheck { \ 81 struct G_sizecheck { \
diff --git a/networking/telnetd.c b/networking/telnetd.c
index b0a1cc4d8..dd59de9d4 100644
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
@@ -60,7 +60,7 @@ struct globals {
60 const char *loginpath; 60 const char *loginpath;
61 const char *issuefile; 61 const char *issuefile;
62 int maxfd; 62 int maxfd;
63}; 63} FIX_ALIASING;
64#define G (*(struct globals*)&bb_common_bufsiz1) 64#define G (*(struct globals*)&bb_common_bufsiz1)
65#define INIT_G() do { \ 65#define INIT_G() do { \
66 G.loginpath = "/bin/login"; \ 66 G.loginpath = "/bin/login"; \
diff --git a/networking/tftp.c b/networking/tftp.c
index b2c3c033c..0e5b48d40 100644
--- a/networking/tftp.c
+++ b/networking/tftp.c
@@ -90,7 +90,7 @@ struct globals {
90 const char *file; 90 const char *file;
91 bb_progress_t pmt; 91 bb_progress_t pmt;
92#endif 92#endif
93}; 93} FIX_ALIASING;
94#define G (*(struct globals*)&bb_common_bufsiz1) 94#define G (*(struct globals*)&bb_common_bufsiz1)
95struct BUG_G_too_big { 95struct BUG_G_too_big {
96 char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1]; 96 char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
diff --git a/networking/wget.c b/networking/wget.c
index ad1770b58..9d813dcc2 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -30,7 +30,7 @@ struct globals {
30#endif 30#endif
31 smallint chunked; /* chunked transfer encoding */ 31 smallint chunked; /* chunked transfer encoding */
32 smallint got_clen; /* got content-length: from server */ 32 smallint got_clen; /* got content-length: from server */
33}; 33} FIX_ALIASING;
34#define G (*(struct globals*)&bb_common_bufsiz1) 34#define G (*(struct globals*)&bb_common_bufsiz1)
35struct BUG_G_too_big { 35struct BUG_G_too_big {
36 char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1]; 36 char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
diff --git a/networking/zcip.c b/networking/zcip.c
index a4da5cbcd..db10d0a26 100644
--- a/networking/zcip.c
+++ b/networking/zcip.c
@@ -77,7 +77,7 @@ enum {
77struct globals { 77struct globals {
78 struct sockaddr saddr; 78 struct sockaddr saddr;
79 struct ether_addr eth_addr; 79 struct ether_addr eth_addr;
80}; 80} FIX_ALIASING;
81#define G (*(struct globals*)&bb_common_bufsiz1) 81#define G (*(struct globals*)&bb_common_bufsiz1)
82#define saddr (G.saddr ) 82#define saddr (G.saddr )
83#define eth_addr (G.eth_addr) 83#define eth_addr (G.eth_addr)
diff --git a/procps/ps.c b/procps/ps.c
index 0b674ffb4..91ebd6819 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -49,7 +49,7 @@ struct globals {
49 unsigned long long seconds_since_boot; 49 unsigned long long seconds_since_boot;
50#endif 50#endif
51 char default_o[sizeof(DEFAULT_O_STR)]; 51 char default_o[sizeof(DEFAULT_O_STR)];
52}; 52} FIX_ALIASING;
53#define G (*(struct globals*)&bb_common_bufsiz1) 53#define G (*(struct globals*)&bb_common_bufsiz1)
54#define out (G.out ) 54#define out (G.out )
55#define out_cnt (G.out_cnt ) 55#define out_cnt (G.out_cnt )
diff --git a/procps/top.c b/procps/top.c
index f514df78a..d76d9af78 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -100,10 +100,8 @@ struct globals {
100 int num_cpus; 100 int num_cpus;
101#endif 101#endif
102 char line_buf[80]; 102 char line_buf[80];
103}; 103}; //FIX_ALIASING; - large code growth
104
105enum { LINE_BUF_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line_buf) }; 104enum { LINE_BUF_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line_buf) };
106
107#define G (*(struct globals*)&bb_common_bufsiz1) 105#define G (*(struct globals*)&bb_common_bufsiz1)
108#define INIT_G() do { \ 106#define INIT_G() do { \
109 struct G_sizecheck { \ 107 struct G_sizecheck { \
diff --git a/runit/runsv.c b/runit/runsv.c
index 48b83960d..5b221e90a 100644
--- a/runit/runsv.c
+++ b/runit/runsv.c
@@ -95,7 +95,7 @@ struct globals {
95 struct fd_pair logpipe; 95 struct fd_pair logpipe;
96 char *dir; 96 char *dir;
97 struct svdir svd[2]; 97 struct svdir svd[2];
98}; 98} FIX_ALIASING;
99#define G (*(struct globals*)&bb_common_bufsiz1) 99#define G (*(struct globals*)&bb_common_bufsiz1)
100#define haslog (G.haslog ) 100#define haslog (G.haslog )
101#define sigterm (G.sigterm ) 101#define sigterm (G.sigterm )
diff --git a/runit/runsvdir.c b/runit/runsvdir.c
index f6aaeb7d4..71fde757e 100644
--- a/runit/runsvdir.c
+++ b/runit/runsvdir.c
@@ -58,7 +58,7 @@ struct globals {
58 struct pollfd pfd[1]; 58 struct pollfd pfd[1];
59 unsigned stamplog; 59 unsigned stamplog;
60#endif 60#endif
61}; 61} FIX_ALIASING;
62#define G (*(struct globals*)&bb_common_bufsiz1) 62#define G (*(struct globals*)&bb_common_bufsiz1)
63#define sv (G.sv ) 63#define sv (G.sv )
64#define svdir (G.svdir ) 64#define svdir (G.svdir )
diff --git a/runit/sv.c b/runit/sv.c
index 96ebb749d..3f76a2d47 100644
--- a/runit/sv.c
+++ b/runit/sv.c
@@ -165,7 +165,7 @@ struct globals {
165/* "Bernstein" time format: unix + 0x400000000000000aULL */ 165/* "Bernstein" time format: unix + 0x400000000000000aULL */
166 uint64_t tstart, tnow; 166 uint64_t tstart, tnow;
167 svstatus_t svstatus; 167 svstatus_t svstatus;
168}; 168} FIX_ALIASING;
169#define G (*(struct globals*)&bb_common_bufsiz1) 169#define G (*(struct globals*)&bb_common_bufsiz1)
170#define acts (G.acts ) 170#define acts (G.acts )
171#define service (G.service ) 171#define service (G.service )
diff --git a/runit/svlogd.c b/runit/svlogd.c
index f556c7db5..fc8b4abb9 100644
--- a/runit/svlogd.c
+++ b/runit/svlogd.c
@@ -184,7 +184,7 @@ struct globals {
184 184
185 sigset_t blocked_sigset; 185 sigset_t blocked_sigset;
186}; 186};
187#define G (*(struct globals*)ptr_to_globals) 187#define G (*ptr_to_globals)
188#define dir (G.dir ) 188#define dir (G.dir )
189#define verbose (G.verbose ) 189#define verbose (G.verbose )
190#define linemax (G.linemax ) 190#define linemax (G.linemax )
diff --git a/selinux/setfiles.c b/selinux/setfiles.c
index 4686d8042..f45e41b2b 100644
--- a/selinux/setfiles.c
+++ b/selinux/setfiles.c
@@ -35,8 +35,7 @@ struct globals {
35 dev_t dev_id; /* Device id where target file exists */ 35 dev_t dev_id; /* Device id where target file exists */
36 int nerr; 36 int nerr;
37 struct edir excludeArray[MAX_EXCLUDES]; 37 struct edir excludeArray[MAX_EXCLUDES];
38}; 38} FIX_ALIASING;
39
40#define G (*(struct globals*)&bb_common_bufsiz1) 39#define G (*(struct globals*)&bb_common_bufsiz1)
41void BUG_setfiles_globals_too_big(void); 40void BUG_setfiles_globals_too_big(void);
42#define INIT_G() do { \ 41#define INIT_G() do { \
diff --git a/sysklogd/logread.c b/sysklogd/logread.c
index 932bbecbb..1e8d6bcc0 100644
--- a/sysklogd/logread.c
+++ b/sysklogd/logread.c
@@ -34,7 +34,7 @@ struct globals {
34 struct sembuf SMrup[1]; // {0, -1, IPC_NOWAIT | SEM_UNDO}, 34 struct sembuf SMrup[1]; // {0, -1, IPC_NOWAIT | SEM_UNDO},
35 struct sembuf SMrdn[2]; // {1, 0}, {0, +1, SEM_UNDO} 35 struct sembuf SMrdn[2]; // {1, 0}, {0, +1, SEM_UNDO}
36 struct shbuf_ds *shbuf; 36 struct shbuf_ds *shbuf;
37}; 37} FIX_ALIASING;
38#define G (*(struct globals*)&bb_common_bufsiz1) 38#define G (*(struct globals*)&bb_common_bufsiz1)
39#define SMrup (G.SMrup) 39#define SMrup (G.SMrup)
40#define SMrdn (G.SMrdn) 40#define SMrdn (G.SMrdn)
diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c
index feece9920..970f5f79f 100644
--- a/util-linux/fsck_minix.c
+++ b/util-linux/fsck_minix.c
@@ -157,7 +157,6 @@ struct globals {
157 /* File-name data */ 157 /* File-name data */
158 char current_name[MAX_DEPTH * MINIX_NAME_MAX]; 158 char current_name[MAX_DEPTH * MINIX_NAME_MAX];
159}; 159};
160
161#define G (*ptr_to_globals) 160#define G (*ptr_to_globals)
162#if ENABLE_FEATURE_MINIX2 161#if ENABLE_FEATURE_MINIX2
163#define version2 (G.version2 ) 162#define version2 (G.version2 )
diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index 80549d1b7..69e1e6937 100644
--- a/util-linux/mdev.c
+++ b/util-linux/mdev.c
@@ -64,7 +64,7 @@
64struct globals { 64struct globals {
65 int root_major, root_minor; 65 int root_major, root_minor;
66 char *subsystem; 66 char *subsystem;
67}; 67} FIX_ALIASING;
68#define G (*(struct globals*)&bb_common_bufsiz1) 68#define G (*(struct globals*)&bb_common_bufsiz1)
69#define root_major (G.root_major) 69#define root_major (G.root_major)
70#define root_minor (G.root_minor) 70#define root_minor (G.root_minor)
diff --git a/util-linux/more.c b/util-linux/more.c
index 076b40057..55694e434 100644
--- a/util-linux/more.c
+++ b/util-linux/more.c
@@ -22,7 +22,7 @@ struct globals {
22 int cin_fileno; 22 int cin_fileno;
23 struct termios initial_settings; 23 struct termios initial_settings;
24 struct termios new_settings; 24 struct termios new_settings;
25}; 25} FIX_ALIASING;
26#define G (*(struct globals*)bb_common_bufsiz1) 26#define G (*(struct globals*)bb_common_bufsiz1)
27#define INIT_G() ((void)0) 27#define INIT_G() ((void)0)
28#define initial_settings (G.initial_settings) 28#define initial_settings (G.initial_settings)
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 23a345931..0bad59770 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -268,7 +268,7 @@ struct globals {
268 llist_t *fslist; 268 llist_t *fslist;
269 char getmntent_buf[1]; 269 char getmntent_buf[1];
270 270
271}; 271} FIX_ALIASING;
272enum { GETMNTENT_BUFSIZE = COMMON_BUFSIZE - offsetof(struct globals, getmntent_buf) }; 272enum { GETMNTENT_BUFSIZE = COMMON_BUFSIZE - offsetof(struct globals, getmntent_buf) };
273#define G (*(struct globals*)&bb_common_bufsiz1) 273#define G (*(struct globals*)&bb_common_bufsiz1)
274#define nfs_mount_version (G.nfs_mount_version) 274#define nfs_mount_version (G.nfs_mount_version)
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
index 33ad00ac1..f647a32bc 100644
--- a/util-linux/swaponoff.c
+++ b/util-linux/swaponoff.c
@@ -20,7 +20,7 @@
20#if ENABLE_FEATURE_SWAPON_PRI 20#if ENABLE_FEATURE_SWAPON_PRI
21struct globals { 21struct globals {
22 int flags; 22 int flags;
23}; 23} FIX_ALIASING;
24#define G (*(struct globals*)&bb_common_bufsiz1) 24#define G (*(struct globals*)&bb_common_bufsiz1)
25#define g_flags (G.flags) 25#define g_flags (G.flags)
26#else 26#else