From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx04.am4.POSTED!not-for-mail Subject: Re: Making the same mistake as the broken C interface to fortran Newsgroups: comp.lang.ada References: From: Chris M Moore User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Message-ID: <2uYSE.298383$sJ3.119314@fx04.am4> X-Complaints-To: http://netreport.virginmedia.com NNTP-Posting-Date: Wed, 03 Jul 2019 07:06:38 UTC Organization: virginmedia.com Date: Wed, 3 Jul 2019 08:06:38 +0100 X-Received-Bytes: 2295 X-Received-Body-CRC: 350256677 Xref: reader01.eternal-september.org comp.lang.ada:56806 Date: 2019-07-03T08:06:38+01:00 List-Id: On 02/07/2019 21:57, Simon Wright wrote: > Chris M Moore writes: > >> Read this interesting article today: >> >> https://lwn.net/SubscriberLink/791393/41d57555202e8cdb/ >> >> Synopsis: C interfaces to Fortran makes some assumptions about how to >> call fortran ABIs (I don't need to pass the hidden length parameter if >> its a character*1) but now Gfortran has optimisations which assume a >> different calling convention (Thou shalt pass the hidden length). >> >> There are work arounds (compile fortran with >> ‑fno‑optimize‑sibling‑calls) but it seems that the proper fix is to >> pass the hidden length parameter. >> >> I had a quick look at the LAPACK bindings and they both seem to use >> Ada characters. :/ > > The code generated with Convention=Fortran should abide by the ABI, and > if that says to pass a hidden length parameter then that's what should > happen. > > I don't know enough x86_64 (or thumb) assembler to be at all sure, but > it looks to me as though no length parameter gets passed. > Hi Simon, So the question is do we break the API or not? We could make the bindings thicker and thus slower. Or break the typing and force client software to change. The software engineer in me says the former but I'm not a user of this API so I doubt my views count for much. -- sig pending (since 1995)