From owner-freebsd-ppc@freebsd.org Sun Jan 12 21:04:12 2020 Return-Path: Delivered-To: freebsd-ppc@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 77F2D1EBAB4 for ; Sun, 12 Jan 2020 21:04:12 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic308-55.consmr.mail.gq1.yahoo.com (sonic308-55.consmr.mail.gq1.yahoo.com [98.137.68.31]) (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 47wq2z1LPXz4r9q for ; Sun, 12 Jan 2020 21:04:10 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: naLelUEVM1lsbJGT3cKkmE9PnXcyBXYId.WtcG8_4B_lWalBRUTXSp1x18PTS.n 7htbtmF0cxHtTv1BmXrJ2cV7UuASZDzSD4pRVIbOK.ZEI_OcBKX2S8KEc7SMNBh7gF2gQJtleLZk jSu.cXRiGHe_uci7SCXirXi5mccbCsmXs_IGhQ3c1Dp.ahDbNSpGeWEC2RKO9wWN5ztPcFjpHyZH CgOax9MTiT6xKczavXm5qFv0YI.Y_dil79hmKO9HiXacjwO_eyBlYUuzv.fQcTImklrWZr7yPjvF AKKe1dQswBR7DIa6.mkp6.3DyFjcQHJy37VoUTEdLjgBnmyJai.EKIwbwqrr2oWW8a18XL.SLpp7 o8pJYZ0PqF7MAsGNJiLW1IwH2PEYbgZweghoWda3p4MGzP7KwAT6_9jxk6qZm8X2bbFYtfiqRqQi nCoI2CPn72g3lWgxURnOmlRe90wLVDT61eWq.gkr12ks.CChDEjDp9fAhX0uaFJviMsyqPMvRBlq H4UbErJ9s9z_DBKld7tfivjme54uLzEfRt7XG25wP2tOS9vvZEL55UZxZUFimqxbD_zR0.79fSTb KulV3kFR9zgcd67xhiTG1yHKMX.bizKvY3.NzmWQ451jrRSjkj28x7VIHcFGqt3vwoEKehJDKZ4R S8PGAray40HwhbFsb90L0A482JdD7ryFI1kt2HQ_OnnmQw_iRTf8UPyZlIKumuFeNDDuGl0A80Bd 6XmnB9BCT.XFKhNBxZh4onZjvx_aFzm49obXFeTRX.7C_U2Iqfj4Bu57eoDEGJ4cRhBTH18WOadl 5eNRw5O.3qvxzOGC2ZSAXpUMZFIxp5rXKmHCW20YAYjT9ICum8NggNwGcAiN6N27B1KxQB6i9BQZ 6vhU1kxlpd5KS87Jdsl15wyy1CROQtJpx6QrrWPojPxIsq4ZE1LRmpln2ofhkE.k38GRzl8DHfIQ rXw2BI.xurghSgQ06BdSa4mqococbDo_5mMATMqBLdBlnT4pMhLkjKDDc8tR0MPDUX89eQf4Dqty 3z5zAyZ1fblmrc7pce.Oqq8n2GNA1J7gxaLxrgkyZAkkU3M.Db4FeCAhtyfcMfNHlXl.131V5SJd oefwGt0H1_o_TVCY15jcnUlxl7.FddpodJoUfDvdKOBM4Bk1eYRYoPS0NZ6z5X3EdGYUSQ0eSKUu nNHbOBITqtnX7I7fQPuVdtJbBDfJ9ZW38T6AL2c1gv4n2PWQPTFpz_EKE5WM7KiFXNrpe1dWo.fR KGwiKJLi49ab68QW1vAJqG5Pq.GoznY6xIZ0hOUint.rXKyZ31NL3u_OFkwDdNenu8aUc9uD52Em X.17h9ZVICbFUxaN235G5dip8y6OtwnNHTTJhlYJ2y3Zb3jQc4KtorNiDQT1B6K6zZZCs_kPM4ll OnNZIndcKIvnRe_nSGXLejlinTWx1xk8k12P_CCyH Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.gq1.yahoo.com with HTTP; Sun, 12 Jan 2020 21:04:09 +0000 Received: by smtp412.mail.bf1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID e3892d742b51918cadba817a384aa334; Sun, 12 Jan 2020 21:04:05 +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 13.0 \(3608.40.2.2.4\)) Subject: head -r356426 32-bit powerpc : clang vs gcc9 C-ABI: *not* the same: clang is doing -maix-struct-return style Message-Id: <36708113-6EA9-4684-9735-973FB8483BFC@yahoo.com> Date: Sun, 12 Jan 2020 13:04:03 -0800 Cc: John Baldwin , Piotr Kubaj To: Justin Hibbits , "bdragon@freebsd.org" , FreeBSD PowerPC ML , FreeBSD Toolchain X-Mailer: Apple Mail (2.3608.40.2.2.4) References: <36708113-6EA9-4684-9735-973FB8483BFC.ref@yahoo.com> X-Rspamd-Queue-Id: 47wq2z1LPXz4r9q X-Spamd-Bar: -- X-Spamd-Result: default: False [-2.41 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; TO_DN_SOME(0.00)[]; FREEMAIL_FROM(0.00)[yahoo.com]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; MV_CASE(0.50)[]; RCPT_COUNT_FIVE(0.00)[6]; DKIM_TRACE(0.00)[yahoo.com:+]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; FREEMAIL_TO(0.00)[gmail.com]; 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(-0.94)[-0.939,0]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-0.97)[-0.970,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(0.00)[ip: (2.08), ipnet: 98.137.64.0/21(0.87), asn: 36647(0.70), country: US(-0.05)]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[31.68.137.98.list.dnswl.org : 127.0.5.0]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-ppc@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Porting FreeBSD to the PowerPC List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2020 21:04:12 -0000 system-clang (C) handles returning example struct based on it being on the stack (-maix-struct-return style); gcc9 via registers r3 and r4 (-msvr4-struct-return style). So this somewhat tracks what was observed for the C++ ABI. The evidence from on a old G4 PowerMac3,6 . . . The source code: # more just_struct.c struct two { int a,b; }; struct two f(void) { struct two r=3D { 0, 1}; return r; } # cc -std=3Dc99 -pedantic -g -O2 -c just_struct.c # objdump -d --prefix-addresses just_struct.o | more just_struct.o: file format elf32-powerpc-freebsd Disassembly of section .text: 00000000 li r4,1 00000004 stw r4,4(r3) 00000008 li r4,0 0000000c stw r4,0(r3) 00000010 blr So it expect r3 to point to the space the caller provided, probably via stack space. This appears to be -maix-struct-return style. # /usr/local/bin/powerpc-unknown-freebsd13.0-gcc9 -std=3Dc99 -pedantic = -g -O2 -c just_struct.c # objdump -d --prefix-addresses just_struct.o | more just_struct.o: file format elf32-powerpc-freebsd Disassembly of section .text: 00000000 li r3,0 00000004 li r4,1 00000008 blr So it returned via register r3 and r4. This appears to be -msvr4-struct-return style. # gcc9 -std=3Dc99 -pedantic -g -O2 -c just_struct.c # objdump -d --prefix-addresses just_struct.o | more just_struct.o: file format elf32-powerpc-freebsd Disassembly of section .text: 00000000 li r3,0 00000004 li r4,1 00000008 blr So it returned via register r3 and r4. This appears to be -msvr4-struct-return style. So is clang using the aix ABI the right ABI? Or does GCC need to change? =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)