From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 116180 invoked by alias); 28 May 2017 01:36:24 -0000 Mailing-List: contact libffi-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libffi-discuss-owner@sourceware.org Received: (qmail 116165 invoked by uid 89); 28 May 2017 01:36:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.1 required=5.0 tests=AWL,BAYES_00,FROM_STARTS_WITH_NUMS,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=ffi, HTo:U*libffi-discuss, foreign, H*F:D*kylheku.com X-HELO: smtp-out-no.shaw.ca Received: from smtp-out-no.shaw.ca (HELO smtp-out-no.shaw.ca) (64.59.134.13) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 28 May 2017 01:36:21 +0000 Received: from kylheku.com ([70.79.163.252]) by shaw.ca with SMTP id En82d2IPyM9gtEn83dQFss; Sat, 27 May 2017 19:36:24 -0600 X-Authority-Analysis: v=2.2 cv=a+JAzQaF c=1 sm=1 tr=0 a=95A0EdhkF1LMGt25d7h1IQ==:117 a=95A0EdhkF1LMGt25d7h1IQ==:17 a=IkcTkHD0fZMA:10 a=SMorJkV_YP8A:10 a=tJ8p9aeEuA8A:10 a=-OQNnSBmWCsA:10 a=xgokjOWkPRhDFHNGOzkA:9 a=QEXdDO2ut3YA:10 Received: from www-data by kylheku.com with local (Exim 4.72) (envelope-from <382-725-6798@kylheku.com>) id 1dEn81-0000N4-46 for libffi-discuss@sourceware.org; Sat, 27 May 2017 18:36:21 -0700 To: libffi-discuss@sourceware.org Subject: Also: problem with return value in =?UTF-8?Q?ffi=5Fcall=20on=20PP?= =?UTF-8?Q?C=36=34=2E?= X-PHP-Originating-Script: 501:rcmail.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Date: Sun, 28 May 2017 01:36:00 -0000 From: "Kaz Kylheku (libffi)" <382-725-6798@kylheku.com> Message-ID: X-Sender: 382-725-6798@kylheku.com User-Agent: Roundcube Webmail/0.9.2 X-CMAE-Envelope: MS4wfCH7Y7JhWGWU2r6TezZYCA+G+VZk4kMtxRnGKtHdhde8XNlrRvK5mKMtAauG4y4zdG23f0QAvK+m5R7631FuNEdnoSJdfxyRJ9fbti26ZYz20vysGk9H qfvZRsBE/vemU70HYHiNYMHssURzRJYfr57XSMiWnXwU8125vM0xBu0QlciMPps6QWiKWyEP1yBI1A== X-IsSubscribed: yes X-SW-Source: 2017/txt/msg00005.txt.bz2 Hi all, It turns out that return values from foreign calls are also not working=20 in the way I expect. For instance, the int return value of dup comes out as zero if a file=20 descriptor is returned. The -1 value emerges properly due to sign extension: 1> (with-dyn-lib nil (deffi dup-fd "dup" int (int))) #:lib-0175 2> (dup-fd 0) 0 3> (dup-fd 4) -1 4> (dup-fd 3) 0 5> (dup-fd 4) 0 6> (dup-fd 5) 0 7> (dup-fd 7) -1 8> (dup-fd 7) -1 Are users supposed to assume that the return value has been widened to a=20 register-wide (8 byte) value regardless of its declared FFI type? Why doesn't that convention apply to the arguments, then? When dup is=20 being called above, the int value is being written at the bottom of the=20 argument buffer, not displaced by four bytes.