From owner-freebsd-ports@freebsd.org Sat Jan 5 03:06:37 2019 Return-Path: Delivered-To: freebsd-ports@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 56FF01485BAA for ; Sat, 5 Jan 2019 03:06:37 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic316-9.consmr.mail.gq1.yahoo.com (sonic316-9.consmr.mail.gq1.yahoo.com [98.137.69.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 69DCE92B40 for ; Sat, 5 Jan 2019 03:06:36 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: ZBNYFxYVM1kY0H2XQ12iDf5aTKwoctGg1MU2oq0amRAF7vza70R671EdJMvISIF N6FMlQ5F7RqI9PVcoLTb9gbG4vMoT0t2gmlNx0GKQxB11_zc.osbvr3UdqC7akmdsIBz_g0tCTOI l.EuhErSb55eoLFE8zPfI8aRuAe61I1a6QUWqf1ZWICsqgdfOHdJIucAKnRr7s68J0v1YQ1pRhYl fz.V08ig_X4fwH1L6hu.7vhixFLU9eLuTQoBytZGWjonQBElwMG9JU82ryVb4oivke87HCgfhz6T LGI02ITPZ4e4IEPzPTk0zrqMSPIub86ayLAT8COzHqLjwZE2EnRdBjq61pncijrn8ulHVrOHbZKq tNRtWfKFQ9B9VU6Uf_Xje40Q_BmwDcdNDhB.lxlVH5wV7AOMrc.OX7OqZtkY1b0dNsxHUfEYEdD_ GFzxu1loJ3XDhQqMNEK270O.T6hvPkxcRSp.7H3WofdLgO.qOi7A8yT_0CcsHuHIXE6r4UrpoRig _PXy7GSaL9jisDNB0HKkFHHHyTXNRmFQXDwyYJUHslPCD_rgACObRnd_NskG2j1nQhiwFdS2iiSU fuAuWRKqAPkO_LAyeiOsVDmU9uVXC3KixXRDxq9BlLXLIJHZFqX7.8CxRDsexX0QGCykWnkbLAah eEamspl4ySRUk9Zk_SMs7VMMeo91sNRd4IrEE8tE1t4KkQjaCpT54XzENlrjpRXzeVv1wBqNsLov TdLgkjHcGBQhEhk8Z0XxmF3AM4_W7Vi.IVUjDIT1zRyRXnykOwhGNXD5MmdqxgfsU7V7UIlLmRv4 gyWsZsPJP0xC.e23ozJQ6n7YJ8_94uJmkqtv3OJpvpgIkdDzUm_XvKygYEDgkn_g3wm7g8TGRarB 7Qcaq.yXURs6lyGT_ex1ECURJWTf_KQawGwcRuvrLnbAWAA1xDJGFad.WdpymWoJ2Fc3_odribNm 3dwPIATZ5gJjsrU2R3Qh_XFloWPuO1xcl4V56JuDuZwWOqjgZ2_dWiGIKIlTgJAPhVYm5tDo5..K lrN_j3ZuRBwoCdQ79s.PapvjddC2Xn.eIKrpK_btrzJM6W.ZlIVixHGYmuMFFtJn1Xk2zrLZIS2e xiA-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic316.consmr.mail.gq1.yahoo.com with HTTP; Sat, 5 Jan 2019 03:06:34 +0000 Received: from c-67-170-167-181.hsd1.or.comcast.net (EHLO [192.168.1.109]) ([67.170.167.181]) by smtp420.mail.gq1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 52894f72f312c5ee1cbab0101d6ea204; Sat, 05 Jan 2019 03:06:33 +0000 (UTC) From: Mark Millard Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 12.2 \(3445.102.3\)) Subject: qemu-x86_64-static has target_msghdr's msg_controllen field with the wrong size so its msg_flags is at the wrong offset and target_msghdr is too large Message-Id: <1A600189-EBEB-49A3-AAF0-C188D39286FE@yahoo.com> Date: Fri, 4 Jan 2019 19:06:32 -0800 Cc: Sean Bruno To: Kyle Evans , freebsd-emulation@freebsd.org, ports-list freebsd X-Mailer: Apple Mail (2.3445.102.3) X-Rspamd-Queue-Id: 69DCE92B40 X-Spamd-Bar: --- X-Spamd-Result: default: False [-3.73 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; MV_CASE(0.50)[]; FREEMAIL_FROM(0.00)[yahoo.com]; RCVD_COUNT_THREE(0.00)[3]; MX_GOOD(-0.01)[cached: mta6.am0.yahoodns.net]; DKIM_TRACE(0.00)[yahoo.com:+]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; NEURAL_HAM_SHORT(-0.88)[-0.878,0]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/21, country:US]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com.dwl.dnswl.org : 127.0.5.0]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(-0.35)[ip: (-2.74), ipnet: 98.137.64.0/21(0.61), asn: 36647(0.49), country: US(-0.08)]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[33.69.137.98.list.dnswl.org : 127.0.5.0] X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Jan 2019 03:06:37 -0000 [qemu-aarch64-static has the same problem but qemu-armv7-sstatic does = not. The context here is FreeBSD head -r341836 based and ports head -r488859 based.] Note: I assume that "struct target_msghdr" is meant to match the memory = layout of the target's native "struct msghdr". Otherwise the reported = differences below could be irrelevant. For amd64 and aarch64 the following code: printf("sizeof(struct msghdr) =3D %lu\n", (unsigned long) = sizeof(struct msghdr)); printf("msg_name %lu\n", (unsigned long) offsetof(struct msghdr, = msg_name)); printf("msg_namelen %lu\n", (unsigned long) offsetof(struct = msghdr, msg_namelen)); printf("msg_iov %lu\n", (unsigned long) offsetof(struct msghdr, = msg_iov)); printf("msg_iovlen %lu\n", (unsigned long) offsetof(struct = msghdr, msg_iovlen)); printf("msg_control %lu\n", (unsigned long) offsetof(struct = msghdr, msg_control)); printf("msg_controllen %lu\n", (unsigned long) offsetof(struct = msghdr, msg_controllen)); printf("msg_flags %lu\n", (unsigned long) offsetof(struct = msghdr, msg_flags)); produces: sizeof(struct msghdr) =3D 48 msg_name 0 msg_namelen 8 msg_iov 16 msg_iovlen 24 msg_control 32 msg_controllen 40 msg_flags 44 Note: msg_controllen was apparently 4 bytes wide on these 64-bit = architectures. However gdb reports for qemu-x86_64-static and qemu-aarch64-static: (gdb) p/d sizeof(struct target_msghdr) $1 =3D 56 (gdb) p/d &((struct target_msghdr *)0)->msg_name=20 $2 =3D 0 (gdb) p/d &((struct target_msghdr *)0)->msg_namelen $3 =3D 8 (gdb) p/d &((struct target_msghdr *)0)->msg_iov =20 $4 =3D 16 (gdb) p/d &((struct target_msghdr *)0)->msg_iovlen $5 =3D 24 (gdb) p/d &((struct target_msghdr *)0)->msg_control $6 =3D 32 (gdb) p/d &((struct target_msghdr *)0)->msg_controllen $7 =3D 40 (gdb) p/d &((struct target_msghdr *)0)->msg_flags =20 $8 =3D 48 Note the larger size (56 instead of 48) and that msg_controllen 's size puts msg_flags at the wrong offset. Notably for armv7, gdb's information for armv7 agrees with: sizeof(struct msghdr) =3D 28 msg_name 0 msg_namelen 4 msg_iov 8 msg_iovlen 12 msg_control 16 msg_controllen 20 msg_flags 24 Apparently msg_controllen should always be 4 bytes wide, even on 64-bit architectures instead of tracking the 64-bit vs. 32-bit status for the architecture. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)