From owner-freebsd-arm@freebsd.org Sun Jan 6 01:02:19 2019 Return-Path: Delivered-To: freebsd-arm@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 6AD96142BBC1 for ; Sun, 6 Jan 2019 01:02:19 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic301-2.consmr.mail.bf2.yahoo.com (sonic301-2.consmr.mail.bf2.yahoo.com [74.6.129.41]) (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 DCFEC7776E for ; Sun, 6 Jan 2019 01:02:17 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: RAkBoQQVM1lJTECdJTspKxtAYzmg9uKso.YOU3wfvUJ_TuJE0lJ213S2kyCFSdH 3Dqr9_NEw4z7w4fOxlCws1K1PPpAZKeWnhjXQRdH1EPcoBFiEdPRZyW9Uh8LeoErdOabCpjf4odH Gp7oxKw4sWloZYnL6_xQrc_H68mZAm56dxnU0roREulrez8KUvRipuAzrUtZwsqYdl2RJD19f.W_ LmsrIO1Q9oGVShyetCEYe8a7fSHtByreib8.jsz9DIu.4EK.t5lbkIwXuLkIBw6VhAv11KPjmQtL AWxp3.FMn5iiuOvytamaJD_H.7ijVF3IAkBS40eqMS6cwMKXOtWBuYOC6FxdWrTvy88KNWMqGy06 SdmDGNDGBY9eMfA1Zld4.XG0CFs_LLcTaoi26GdS_e8SaLsKbsS9O3e9rT7PfCi25ZikHEgyljPh w5mOwdiAbkDbAdTRvMxjBFKKpx33vbqC4S_TvQln2CFiy0IZFwiI_nEBpAJNarKHsLt.2ro5lfJy EjnMZBaTPN29WihjBpUETahW1mCJNtQ1tLI9Mo5xX7itubvfa8OPDMRI.VEKb5aqafm.j0ybFXOj .gulvsLvPpUrgDSl9NTl4AstS6xJpDSxRO_vaxERcJ1iKtUtP8lqJ9yQ0BC7AF3jftU_hBlYHolS FEm2NVc33ZGYtOfrq9Ewpzy3qDVmsNupB_.k49lG3C4Exs28OF_R3O6l0oa6NIotIAkqZlg0F1bO 6rqSjERUjfSmcM2FzaKF9UXyLLBi7VLrA17_rUT19hXcY2y7t4gf1V2Wt2u8inSNZVE_EP1YpfrK RSSOla5SBxcwDRg5PF4d.YRZYoDE07jRIPBAXFfz3ea2KCHjUX8Zad2UGBlph21QiY6teoaAvRof FmMqhUb3h5LgwJFRoVKNoKTSSf8djul7XTwJ7aBum0s72pwPriKe__71NEvjTrr3FlNcBlh7Ze9W 6UL.MsP7TeDnRJYHJQnLzu45Q057gOUb11BKqNVF8dy1q4bGPfsh4FMrXlY3EeajnOQeUDau_NfB WqUywHH5ZTkdDA92Lr0cdGCkZdKEwQdVAA22VYLkFy3OjZgPSRaddkU_B9BUtsnM8U0ffsJ8fGjP PNWAzRLGd Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.bf2.yahoo.com with HTTP; Sun, 6 Jan 2019 01:02:16 +0000 Received: from c-67-170-167-181.hsd1.or.comcast.net (EHLO [192.168.1.109]) ([67.170.167.181]) by smtp421.mail.bf1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 78e25cd842cd36be75c62a6ccd5821ed; Sun, 06 Jan 2019 01:02:16 +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-arm-static has target_semd_ds too small vs. arm natives semid_ds Message-Id: <3480CAB5-6F8C-4160-97C7-AF38A5F55078@yahoo.com> Date: Sat, 5 Jan 2019 17:02:13 -0800 Cc: Sean Bruno , freebsd-arm To: Kyle Evans , freebsd-emulation@freebsd.org, ports-list freebsd X-Mailer: Apple Mail (2.3445.102.3) X-Rspamd-Queue-Id: DCFEC7776E X-Spamd-Bar: +++ X-Spamd-Result: default: False [3.09 / 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]; RCPT_COUNT_FIVE(0.00)[5]; 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]; 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:26101, ipnet:74.6.128.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)[]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; NEURAL_SPAM_SHORT(0.98)[0.975,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(1.45)[ip: (4.72), ipnet: 74.6.128.0/21(1.45), asn: 26101(1.16), country: US(-0.08)]; NEURAL_SPAM_MEDIUM(0.75)[0.753,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_SPAM_LONG(0.42)[0.423,0]; RCVD_IN_DNSWL_NONE(0.00)[41.129.6.74.list.dnswl.org : 127.0.5.0] X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 06 Jan 2019 01:02:19 -0000 [The context here is FreeBSD head -r341836 based and ports head -r488859 = based.] Note: I assume that "struct target_semd_ds" is meant to match the memory = layout of the target's native "struct semid_ds". Otherwise the reported = differences below could be irrelevant. For armv7 (and likely armv6) the following code: printf("sizeof(struct semid_ds) =3D %lu\n", (unsigned long) = sizeof(struct semid_ds)); printf("sem_perm %lu\n", (unsigned long) offsetof(struct = semid_ds, sem_perm)); printf("__sem_base %lu\n", (unsigned long) offsetof(struct = semid_ds, __sem_base)); printf("sem_nsems %lu\n", (unsigned long) offsetof(struct = semid_ds, sem_nsems)); printf("sem_otime %lu\n", (unsigned long) offsetof(struct = semid_ds, sem_otime)); printf("sem_ctime %lu\n", (unsigned long) offsetof(struct = semid_ds, sem_ctime)); =20 produces: sizeof(struct semid_ds) =3D 48 sem_perm 0 __sem_base 24 sem_nsems 28 sem_otime 32 sem_ctime 40 However gdb reports for qemu-arm-static (on amd64): (gdb) p/d sizeof(struct target_semid_ds) $25 =3D 40 (gdb) p/d &((struct target_semid_ds *)0)->sem_perm=20 $26 =3D 0 (gdb) p/d &((struct target_semid_ds *)0)->sem_base =20 $27 =3D 24 (gdb) p/d &((struct target_semid_ds *)0)->sem_nsems $28 =3D 28 (gdb) p/d &((struct target_semid_ds *)0)->sem_otime $29 =3D 32 (gdb) p/d &((struct target_semid_ds *)0)->sem_ctime $30 =3D 36 so after sem_otime the offsets are different. /usr/include/sys/sem.h has: struct semid_ds { struct ipc_perm sem_perm; /* operation permission struct = */ struct sem *__sem_base; /* pointer to first semaphore in = set */ unsigned short sem_nsems; /* number of sems in set */ time_t sem_otime; /* last operation time */ time_t sem_ctime; /* last change time */ /* Times measured in secs since = */ /* 00:00:00 UTC, Jan. 1, 1970, = without leap seconds */ }; = /wrkdirs/usr/ports/emulators/qemu-user-static/work/qemu-bsd-user-4ef7d07/b= sd-user/syscall_defs.h has: struct target_semid_ds { struct target_ipc_perm sem_perm; /* operation permission struct */ abi_ulong sem_base; /* pointer to first semaphore in set */ uint16_t sem_nsems; /* number of sems in set */ abi_ulong sem_otime; /* last operation time */ abi_ulong sem_ctime; /* times measured in secs */ }; abi_ulong's for sem_otime, and sem_otime are the wrong size for armv7: arm uses 64-bit time_t. As of 12+ only i386 uses 32-bit time_t if I understand right. In 11.x 32-bit powerpc also uses 32-bit time_t. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)