Date: Fri, 6 Jul 2001 21:47:59 -0700 (PDT) From: Matthew Jacob <mjacob@feral.com> To: "David O'Brien" <obrien@NUXI.com> Cc: alpha@FreeBSD.ORG Subject: this a gcc bug? Message-ID: <Pine.BSF.4.21.0107062130090.48822-100000@beppo>
next in thread | raw e-mail | index | archive | help
I'm taking it your our point person for toolchain issues? If not, could you
direct me to....?
I was tracking down unaligned faults in ping...
They come from an unaligned reference in that:
struct sockaddr whereto;
...
bzero((char *)&whereto, sizeof(struct sockaddr));
to = (struct sockaddr_in *)&whereto;
...
(void)printf("PING %s (%s)", hostname,
inet_ntoa(to->sin_addr));
...
pid 528 (ping): unaligned access: va=0x120017ad3 pc=0x120003850 ra=0x12000335c
op=ldl
Why?
Well, in test compiling ping.c I found:
yorp.feral.com > nm /tmp/ping |grep where
0000000120027b0f B whereto
But was it the linker?
No. Assembler output shows:
...
.comm options,4,4
.comm rcvd_tbl,128,1
.comm whereto,16,1
...
Say &what&? Here we have a structure (struct sockaddr) that has only
byte required alignment?
Structs, no matter what there contents, have been ALDOUBLE since Portable C
compiler days- or so I thought. Maybe I'm just showing my ignorance/age. Have
I
gone nuts?
-matt
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0107062130090.48822-100000>
