Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Aug 2012 18:02:22 +0400
From:      Andrey Zonov <zont@FreeBSD.org>
To:        Warner Losh <imp@bsdimp.com>
Cc:        freebsd-arch@freebsd.org
Subject:   Re: warning: cast increases required alignment of target type
Message-ID:  <503CCF6E.7080208@FreeBSD.org>
In-Reply-To: <CDF0AE44-1CB2-42F7-BE60-DD2E4697A374@bsdimp.com>
References:  <503C8809.3050507@FreeBSD.org> <CDF0AE44-1CB2-42F7-BE60-DD2E4697A374@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigC0AA8BFED6D1E4FEBC86BF53
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On 8/28/12 5:12 PM, Warner Losh wrote:
>=20
> On Aug 28, 2012, at 2:57 AM, Andrey Zonov wrote:
>=20
>> Hi,
>>
>> Does anyone know how to correctly fix this warning for
>> arm/ia64/mips/sparc64?
>>
>> usr.bin/elf2aout/elf2aout.c: In function 'main':
>> usr.bin/elf2aout/elf2aout.c:129: warning: cast increases required
>> alignment of target type
>>
>> I found this explanation from bde, but still don't understand how to
>> correctly fix this issue.
>>
>> ----------------------------------------------------------------------=
--
>> r99799 | bde | 2002-07-11 22:06:09 +0400 (Thu, 11 Jul 2002) | 10 lines=

>>
>> Set NO_WERROR to ignore the following warning which is emitted on
>> alphas:
>>    .../elf2aout.c:130: warning: cast increases required alignment of
>>    target type
>> The warning is about casting ((char *)e + phoff) to a struct pointer,
>> where e is aligned but phoff might be garbage, so I think the warning
>> should be emitted on most machines (even on i386's, alignment checking=

>> might be on) and the correct fix would involve validation phoff before=

>> using it.
>>
>> Is this fix correct?
>=20
> No.  You need to tell the compiler that e has the alignment you think i=
t has so that it can check to make sure that you are actually right.  Jus=
t casting like this defeats the purpose of the check and will break on ot=
her architectures.
>=20
> Warner
>=20

What do you say about this one?

Index: usr.bin/elf2aout/elf2aout.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- usr.bin/elf2aout/elf2aout.c	(revision 239611)
+++ usr.bin/elf2aout/elf2aout.c	(working copy)
@@ -126,7 +126,7 @@
 	entry =3D xe64toh(e->e_entry);
 	phoff =3D xe64toh(e->e_phoff);
 	phnum =3D xe16toh(e->e_phnum);
-	p =3D (Elf64_Phdr *)((char *)e + phoff);
+	p =3D (Elf64_Phdr *)(e + phoff);
 	bzero(&a, sizeof(a));
 	for (i =3D 0; i < phnum; i++) {
 		type =3D xe32toh(p[i].p_type);

I can build elf2aout without warnings on amd64 in 'buildenv' for all
targets.

>> Index: usr.bin/elf2aout/elf2aout.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> --- usr.bin/elf2aout/elf2aout.c	(revision 239611)
>> +++ usr.bin/elf2aout/elf2aout.c	(working copy)
>> @@ -126,7 +126,7 @@
>> 	entry =3D xe64toh(e->e_entry);
>> 	phoff =3D xe64toh(e->e_phoff);
>> 	phnum =3D xe16toh(e->e_phnum);
>> -	p =3D (Elf64_Phdr *)((char *)e + phoff);
>> +	p =3D (Elf64_Phdr *)(void *)((char *)e + phoff);
>> 	bzero(&a, sizeof(a));
>> 	for (i =3D 0; i < phnum; i++) {
>> 		type =3D xe32toh(p[i].p_type);
>>
>>
>> --=20
>> Andrey Zonov
>>
>=20


--=20
Andrey Zonov


--------------enigC0AA8BFED6D1E4FEBC86BF53
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
Comment: GPGTools - http://gpgtools.org

iQEcBAEBAgAGBQJQPM9wAAoJEBWLemxX/CvTx3YH/RMywLzQHvj1Q4gjdmElavnh
v11NF5TNplZxMB5RR/7cY202Jw3GOIV4Jeei1ElqNS1tmBjALtO0h1ROfaGbTGki
C8Hb8L/U+Te0TZjI8VSpvv3CwmG99iZNjrxtrIg0RXRmWcAzb7su81eKqrmDhdWl
r/YehA6gg4Y2ePWRL2Sq0DLJNMPwTwSjNxJZI82MzJAlBDJlqGSP/PDi+u1maIY6
k1LoNoVnb4MMoBRVZ/pa6KgD3BgSxumPCU5DOl9Nm2k3Xb61mmwBN1aiXrMjjSpJ
7MDvWRcpzU78b4cFNFLtWywTrdpZTEWr1fUPF5rMLcwMqPrVikky2VzHEInVDnQ=
=DEZE
-----END PGP SIGNATURE-----

--------------enigC0AA8BFED6D1E4FEBC86BF53--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?503CCF6E.7080208>