fix type-punned pointer warnings from gcc
R=rsc http://codereview.appspot.com/396042
This commit is contained in:
parent
2fe14f1315
commit
0c9c620f39
11 changed files with 57 additions and 29 deletions
|
|
@ -855,11 +855,12 @@ ocand(Node *n, Node *res)
|
||||||
{
|
{
|
||||||
Node l, r;
|
Node l, r;
|
||||||
|
|
||||||
res->store.fmt = l.store.fmt;
|
res->store.fmt = 'D';
|
||||||
res->op = OCONST;
|
res->op = OCONST;
|
||||||
res->type = TINT;
|
res->type = TINT;
|
||||||
res->store.u.ival = 0;
|
res->store.u.ival = 0;
|
||||||
expr(n->left, &l);
|
expr(n->left, &l);
|
||||||
|
res->store.fmt = l.store.fmt;
|
||||||
if(bool(&l) == 0)
|
if(bool(&l) == 0)
|
||||||
return;
|
return;
|
||||||
expr(n->right, &r);
|
expr(n->right, &r);
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ exform(int fcount, int prt, char *ifp, Map *map, int literal, int firstpass)
|
||||||
char *fp;
|
char *fp;
|
||||||
char c, modifier;
|
char c, modifier;
|
||||||
int i;
|
int i;
|
||||||
ushort sh, *sp;
|
ushort sh;
|
||||||
uchar ch, *cp;
|
uchar ch, *cp;
|
||||||
Symbol s;
|
Symbol s;
|
||||||
char buf[512];
|
char buf[512];
|
||||||
|
|
@ -205,7 +205,8 @@ exform(int fcount, int prt, char *ifp, Map *map, int literal, int firstpass)
|
||||||
|
|
||||||
case 'R':
|
case 'R':
|
||||||
if (literal) {
|
if (literal) {
|
||||||
sp = (u16int*)(void*)˙
|
u16int sp[2];
|
||||||
|
memmove(&sp, &dot, 4);
|
||||||
dprint("%C%C", sp[0], sp[1]);
|
dprint("%C%C", sp[0], sp[1]);
|
||||||
endline();
|
endline();
|
||||||
dotinc = 4;
|
dotinc = 4;
|
||||||
|
|
|
||||||
|
|
@ -322,10 +322,14 @@ cryptinit(void)
|
||||||
{
|
{
|
||||||
uchar key[32], ivec[AESbsize];
|
uchar key[32], ivec[AESbsize];
|
||||||
int i;
|
int i;
|
||||||
|
u32int u32;
|
||||||
|
|
||||||
*(u32int*)sessid = truerand();
|
u32 = truerand();
|
||||||
for(i=0; i<nelem(key); i+=4)
|
memmove(sessid, &u32, 4);
|
||||||
*(u32int*)&key[i] = truerand();
|
for(i=0; i<nelem(key); i+=4) {
|
||||||
|
u32 = truerand();
|
||||||
|
memmove(key+i, &u32, 4);
|
||||||
|
}
|
||||||
for(i=0; i<nelem(ivec); i++)
|
for(i=0; i<nelem(ivec); i++)
|
||||||
ivec[i] = fastrand();
|
ivec[i] = fastrand();
|
||||||
setupAESstate(&aesstate, key, sizeof key, ivec);
|
setupAESstate(&aesstate, key, sizeof key, ivec);
|
||||||
|
|
@ -793,6 +797,8 @@ cnodelookup(Ctree *t, Cnode **np, char *name)
|
||||||
Nfs3Status
|
Nfs3Status
|
||||||
cnodegetattr(Cnode *n, Nfs3Attr *attr)
|
cnodegetattr(Cnode *n, Nfs3Attr *attr)
|
||||||
{
|
{
|
||||||
|
uint64 u64;
|
||||||
|
|
||||||
memset(attr, 0, sizeof *attr);
|
memset(attr, 0, sizeof *attr);
|
||||||
if(n->read){
|
if(n->read){
|
||||||
attr->type = Nfs3FileReg;
|
attr->type = Nfs3FileReg;
|
||||||
|
|
@ -805,7 +811,8 @@ cnodegetattr(Cnode *n, Nfs3Attr *attr)
|
||||||
attr->size = 1024;
|
attr->size = 1024;
|
||||||
attr->nlink = 10;
|
attr->nlink = 10;
|
||||||
}
|
}
|
||||||
attr->fileid = *(u64int*)n->handle;
|
memmove(&u64, n->handle, 8);
|
||||||
|
attr->fileid = u64;
|
||||||
attr->atime.sec = n->mtime;
|
attr->atime.sec = n->mtime;
|
||||||
attr->mtime.sec = n->mtime;
|
attr->mtime.sec = n->mtime;
|
||||||
attr->ctime.sec = n->mtime;
|
attr->ctime.sec = n->mtime;
|
||||||
|
|
@ -817,6 +824,7 @@ cnodereaddir(Cnode *n, u32int count, u64int cookie, uchar **pdata, u32int *pcoun
|
||||||
{
|
{
|
||||||
uchar *data, *p, *ep, *np;
|
uchar *data, *p, *ep, *np;
|
||||||
u64int c;
|
u64int c;
|
||||||
|
u64int u64;
|
||||||
Nfs3Entry ne;
|
Nfs3Entry ne;
|
||||||
|
|
||||||
n = n->kidlist;
|
n = n->kidlist;
|
||||||
|
|
@ -842,7 +850,8 @@ cnodereaddir(Cnode *n, u32int count, u64int cookie, uchar **pdata, u32int *pcoun
|
||||||
ne.name = n->name;
|
ne.name = n->name;
|
||||||
ne.namelen = strlen(n->name);
|
ne.namelen = strlen(n->name);
|
||||||
ne.cookie = ++cookie;
|
ne.cookie = ++cookie;
|
||||||
ne.fileid = *(u64int*)n->handle;
|
memmove(&u64, n->handle, 8);
|
||||||
|
ne.fileid = u64;
|
||||||
if(nfs3entrypack(p, ep, &np, &ne) < 0)
|
if(nfs3entrypack(p, ep, &np, &ne) < 0)
|
||||||
break;
|
break;
|
||||||
p = np;
|
p = np;
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ parseip(char *host, u32int *pip)
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
*pip = *(u32int*)addr;
|
memmove(pip, addr, 4);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ sendfd(int s, int fd)
|
||||||
cmsg->cmsg_len = CMSG_LEN(sizeof(int));
|
cmsg->cmsg_len = CMSG_LEN(sizeof(int));
|
||||||
cmsg->cmsg_level = SOL_SOCKET;
|
cmsg->cmsg_level = SOL_SOCKET;
|
||||||
cmsg->cmsg_type = SCM_RIGHTS;
|
cmsg->cmsg_type = SCM_RIGHTS;
|
||||||
*(int*)CMSG_DATA(cmsg) = fd;
|
memmove(CMSG_DATA(cmsg), &fd, sizeof(int));
|
||||||
|
|
||||||
if((n=sendmsg(s, &msg, 0)) != iov.iov_len)
|
if((n=sendmsg(s, &msg, 0)) != iov.iov_len)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ truerand(void)
|
||||||
{
|
{
|
||||||
int i, n;
|
int i, n;
|
||||||
uchar buf[sizeof(ulong)];
|
uchar buf[sizeof(ulong)];
|
||||||
|
ulong x;
|
||||||
static int randfd = -1;
|
static int randfd = -1;
|
||||||
static char *randfile;
|
static char *randfile;
|
||||||
|
|
||||||
|
|
@ -21,5 +22,6 @@ truerand(void)
|
||||||
for(i=0; i<sizeof(buf); i += n)
|
for(i=0; i<sizeof(buf); i += n)
|
||||||
if((n = readn(randfd, buf+i, sizeof(buf)-i)) < 0)
|
if((n = readn(randfd, buf+i, sizeof(buf)-i)) < 0)
|
||||||
sysfatal("can't read %s: %r", randfile);
|
sysfatal("can't read %s: %r", randfile);
|
||||||
return *((ulong*)buf);
|
memmove(&x, buf, sizeof x);
|
||||||
|
return x;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,8 +76,6 @@ readnvram(Nvrsafe *safep, int flag)
|
||||||
if(strcmp(cputype, "386")==0 || strcmp(cputype, "alpha")==0)
|
if(strcmp(cputype, "386")==0 || strcmp(cputype, "alpha")==0)
|
||||||
cputype = "pc";
|
cputype = "pc";
|
||||||
|
|
||||||
safe = (Nvrsafe*)buf;
|
|
||||||
|
|
||||||
fd = -1;
|
fd = -1;
|
||||||
safeoff = -1;
|
safeoff = -1;
|
||||||
safelen = -1;
|
safelen = -1;
|
||||||
|
|
@ -140,7 +138,7 @@ readnvram(Nvrsafe *safep, int flag)
|
||||||
memset(safep, 0, sizeof(*safep));
|
memset(safep, 0, sizeof(*safep));
|
||||||
safe = safep;
|
safe = safep;
|
||||||
}else{
|
}else{
|
||||||
*safep = *safe;
|
memmove(safep, buf, sizeof *safep);
|
||||||
safe = safep;
|
safe = safep;
|
||||||
|
|
||||||
err |= check(safe->machkey, DESKEYLEN, safe->machsum, "bad nvram key");
|
err |= check(safe->machkey, DESKEYLEN, safe->machsum, "bad nvram key");
|
||||||
|
|
@ -163,7 +161,7 @@ readnvram(Nvrsafe *safep, int flag)
|
||||||
safe->configsum = nvcsum(safe->config, CONFIGLEN);
|
safe->configsum = nvcsum(safe->config, CONFIGLEN);
|
||||||
safe->authidsum = nvcsum(safe->authid, sizeof(safe->authid));
|
safe->authidsum = nvcsum(safe->authid, sizeof(safe->authid));
|
||||||
safe->authdomsum = nvcsum(safe->authdom, sizeof(safe->authdom));
|
safe->authdomsum = nvcsum(safe->authdom, sizeof(safe->authdom));
|
||||||
*(Nvrsafe*)buf = *safe;
|
memmove(buf, safe, sizeof *safe);
|
||||||
if(seek(fd, safeoff, 0) < 0
|
if(seek(fd, safeoff, 0) < 0
|
||||||
|| write(fd, buf, safelen) != safelen){
|
|| write(fd, buf, safelen) != safelen){
|
||||||
fprint(2, "can't write key to nvram: %r\n");
|
fprint(2, "can't write key to nvram: %r\n");
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,7 @@ _deleteavl(Avl **tp, Avl *p, Avl *rx, int(*cmp)(Avl*,Avl*), Avl **del,
|
||||||
return -(ob != 0 && (*tp)->bal == 0);
|
return -(ob != 0 && (*tp)->bal == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
static void
|
static void
|
||||||
checkparents(Avl *a, Avl *p)
|
checkparents(Avl *a, Avl *p)
|
||||||
{
|
{
|
||||||
|
|
@ -221,6 +222,7 @@ checkparents(Avl *a, Avl *p)
|
||||||
checkparents(a->n[0], a);
|
checkparents(a->n[0], a);
|
||||||
checkparents(a->n[1], a);
|
checkparents(a->n[1], a);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
struct Avltree
|
struct Avltree
|
||||||
{
|
{
|
||||||
|
|
@ -403,6 +405,7 @@ endwalk(Avlwalk *w)
|
||||||
free(w);
|
free(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
static void
|
static void
|
||||||
walkavl(Avl *t, void (*f)(Avl*, void*), void *v)
|
walkavl(Avl *t, void (*f)(Avl*, void*), void *v)
|
||||||
{
|
{
|
||||||
|
|
@ -412,3 +415,4 @@ walkavl(Avl *t, void (*f)(Avl*, void*), void *v)
|
||||||
f(t, v);
|
f(t, v);
|
||||||
walkavl(t->n[1], f, v);
|
walkavl(t->n[1], f, v);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@ udpread(int fd, Udphdr *hdr, void *buf, long n)
|
||||||
}
|
}
|
||||||
memset(hdr, 0, sizeof *hdr);
|
memset(hdr, 0, sizeof *hdr);
|
||||||
memmove(hdr->laddr, v4prefix, IPaddrlen);
|
memmove(hdr->laddr, v4prefix, IPaddrlen);
|
||||||
*(u32int*)(hdr->laddr+12) = *(u32int*)&sin.sin_addr;
|
memmove(hdr->laddr+12, &sin.sin_addr, sizeof(u32int));
|
||||||
*(u16int*)hdr->lport = *(u16int*)&sin.sin_port;
|
memmove(hdr->lport, &sin.sin_port, sizeof(u16int));
|
||||||
|
|
||||||
len = sizeof sin;
|
len = sizeof sin;
|
||||||
n = recvfrom(fd, buf, n, 0, (struct sockaddr*)&sin, &len);
|
n = recvfrom(fd, buf, n, 0, (struct sockaddr*)&sin, &len);
|
||||||
|
|
@ -33,8 +33,8 @@ udpread(int fd, Udphdr *hdr, void *buf, long n)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
memmove(hdr->raddr, v4prefix, IPaddrlen);
|
memmove(hdr->raddr, v4prefix, IPaddrlen);
|
||||||
*(u32int*)(hdr->raddr+12) = *(u32int*)&sin.sin_addr;
|
memmove(hdr->raddr+12, &sin.sin_addr, sizeof(u32int));
|
||||||
*(u16int*)hdr->rport = *(u16int*)&sin.sin_port;
|
memmove(hdr->rport, &sin.sin_port, sizeof(u16int));
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ ptracerw(int type, int xtype, int isr, int pid, ulong addr, void *v, uint n)
|
||||||
if(n-i >= 4)
|
if(n-i >= 4)
|
||||||
*(u32int*)((char*)v+i) = u;
|
*(u32int*)((char*)v+i) = u;
|
||||||
else{
|
else{
|
||||||
*(u32int*)buf = u;
|
memmove(buf, &u, 4);
|
||||||
memmove((char*)v+i, buf, n-i);
|
memmove((char*)v+i, buf, n-i);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -157,9 +157,9 @@ ptracerw(int type, int xtype, int isr, int pid, ulong addr, void *v, uint n)
|
||||||
u = ptrace(xtype, pid, addr+i, 0);
|
u = ptrace(xtype, pid, addr+i, 0);
|
||||||
if(errno)
|
if(errno)
|
||||||
return -1;
|
return -1;
|
||||||
*(u32int*)buf = u;
|
memmove(buf, &u, 4);
|
||||||
memmove(buf, (char*)v+i, n-i);
|
memmove(buf, (char*)v+i, n-i);
|
||||||
u = *(u32int*)buf;
|
memmove(&u, buf, 4);
|
||||||
}
|
}
|
||||||
if(ptrace(type, pid, addr+i, u) < 0)
|
if(ptrace(type, pid, addr+i, u) < 0)
|
||||||
goto ptraceerr;
|
goto ptraceerr;
|
||||||
|
|
|
||||||
|
|
@ -2109,6 +2109,7 @@ memoptdraw(Memdrawparam *par)
|
||||||
{
|
{
|
||||||
int m, y, dy, dx, op;
|
int m, y, dy, dx, op;
|
||||||
u32int v;
|
u32int v;
|
||||||
|
u16int u16;
|
||||||
Memimage *src;
|
Memimage *src;
|
||||||
Memimage *dst;
|
Memimage *dst;
|
||||||
|
|
||||||
|
|
@ -2198,7 +2199,8 @@ DBG print("dp %p v %lux lm %ux (v ^ *dp) & lm %lux\n", dp, v, lm, (v^*dp)&lm);
|
||||||
case 16:
|
case 16:
|
||||||
p[0] = v; /* make little endian */
|
p[0] = v; /* make little endian */
|
||||||
p[1] = v>>8;
|
p[1] = v>>8;
|
||||||
v = *(ushort*)p;
|
memmove(&u16, p, 2);
|
||||||
|
v = u16;
|
||||||
DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
|
DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
|
||||||
dp, dx, dy, dwid);
|
dp, dx, dy, dwid);
|
||||||
for(y=0; y<dy; y++, dp+=dwid)
|
for(y=0; y<dy; y++, dp+=dwid)
|
||||||
|
|
@ -2213,7 +2215,7 @@ DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
|
||||||
p[1] = v>>8;
|
p[1] = v>>8;
|
||||||
p[2] = v>>16;
|
p[2] = v>>16;
|
||||||
p[3] = v>>24;
|
p[3] = v>>24;
|
||||||
v = *(u32int*)p;
|
memmove(&v, p, 4);
|
||||||
for(y=0; y<dy; y++, dp+=dwid)
|
for(y=0; y<dy; y++, dp+=dwid)
|
||||||
memsetl(dp, v, dx);
|
memsetl(dp, v, dx);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -2371,6 +2373,13 @@ chardraw(Memdrawparam *par)
|
||||||
uchar sp[4];
|
uchar sp[4];
|
||||||
Rectangle r, mr;
|
Rectangle r, mr;
|
||||||
Memimage *mask, *src, *dst;
|
Memimage *mask, *src, *dst;
|
||||||
|
union {
|
||||||
|
// black box to hide pointer conversions from gcc.
|
||||||
|
// we'll see how long this works.
|
||||||
|
uchar *u8;
|
||||||
|
u16int *u16;
|
||||||
|
u32int *u32;
|
||||||
|
} gcc_black_box;
|
||||||
|
|
||||||
if(0) if(drawdebug) iprint("chardraw? mf %lux md %d sf %lux dxs %d dys %d dd %d ddat %p sdat %p\n",
|
if(0) if(drawdebug) iprint("chardraw? mf %lux md %d sf %lux dxs %d dys %d dd %d ddat %p sdat %p\n",
|
||||||
par->mask->flags, par->mask->depth, par->src->flags,
|
par->mask->flags, par->mask->depth, par->src->flags,
|
||||||
|
|
@ -2443,8 +2452,10 @@ DBG print("bits %lux sh %d...", bits, i);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
ws = (ushort*)wp;
|
gcc_black_box.u8 = wp;
|
||||||
v = *(ushort*)sp;
|
ws = gcc_black_box.u16;
|
||||||
|
gcc_black_box.u8 = sp;
|
||||||
|
v = *gcc_black_box.u16;
|
||||||
for(x=bx; x>ex; x--, ws++){
|
for(x=bx; x>ex; x--, ws++){
|
||||||
i = x&7;
|
i = x&7;
|
||||||
if(i == 8-1)
|
if(i == 8-1)
|
||||||
|
|
@ -2469,8 +2480,10 @@ DBG print("bits %lux sh %d...", bits, i);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
wl = (u32int*)wp;
|
gcc_black_box.u8 = wp;
|
||||||
v = *(u32int*)sp;
|
wl = gcc_black_box.u32;
|
||||||
|
gcc_black_box.u8 = sp;
|
||||||
|
v = *gcc_black_box.u32;
|
||||||
for(x=bx; x>ex; x--, wl++){
|
for(x=bx; x>ex; x--, wl++){
|
||||||
i = x&7;
|
i = x&7;
|
||||||
if(i == 8-1)
|
if(i == 8-1)
|
||||||
|
|
@ -2537,7 +2550,7 @@ _memfillcolor(Memimage *i, u32int val)
|
||||||
p[1] = bits>>8;
|
p[1] = bits>>8;
|
||||||
p[2] = bits>>16;
|
p[2] = bits>>16;
|
||||||
p[3] = bits>>24;
|
p[3] = bits>>24;
|
||||||
bits = *(u32int*)p;
|
memmove(&bits, p, 4);
|
||||||
memsetl(wordaddr(i, i->r.min), bits, i->width*Dy(i->r));
|
memsetl(wordaddr(i, i->r.min), bits, i->width*Dy(i->r));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue