From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 129569 invoked by alias); 1 Aug 2015 15:59:06 -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 129559 invoked by uid 89); 1 Aug 2015 15:59:04 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.3 required=5.0 tests=AWL,BAYES_20,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-io0-f171.google.com Received: from mail-io0-f171.google.com (HELO mail-io0-f171.google.com) (209.85.223.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sat, 01 Aug 2015 15:59:02 +0000 Received: by iodd187 with SMTP id d187so110992022iod.2 for ; Sat, 01 Aug 2015 08:59:00 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.107.16.99 with SMTP id y96mr12629011ioi.93.1438444740687; Sat, 01 Aug 2015 08:59:00 -0700 (PDT) Received: by 10.64.1.202 with HTTP; Sat, 1 Aug 2015 08:59:00 -0700 (PDT) Date: Sat, 01 Aug 2015 15:59:00 -0000 Message-ID: Subject: PPC bug when handling double From: Aaron R To: libffi-discuss@sourceware.org Content-Type: multipart/mixed; boundary=001a113e782eccce29051c420368 X-IsSubscribed: yes X-SW-Source: 2015/txt/msg00077.txt.bz2 --001a113e782eccce29051c420368 Content-Type: text/plain; charset=UTF-8 Content-length: 1682 Hi, I am not very familiar with libffi but I believe I may have stumbled upon a bug. If you build the attached test code, you will get two test programs - namely, ex1 and ex2. The only difference between the two is '-D__USE_F6__' , which passes the last parameter of test_func1() as a float instead of a double. I have tried these test programs on both X86 and PPC (32-bit in both cases) using libffi 3.2.1. I did not use any special configure flags when I built libffi 3.2.1 for both platforms. This is what I get on X86: $ ./ex1 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 20.100000 rc = 1 - success? Y $ ./ex2 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 20.1 rc = 1 - success? Y That looks fine. The last parameter is always 20.1. If I run the same code on PPC I get: $ uname -a Linux tstsrv 3.0.101-0.47.52-ppc64 #1 SMP Thu Mar 26 10:55:49 UTC 2015 (0e3c7c8) ppc64 ppc64 ppc64 GNU/Linux $ file ./ppc/libffi_3.2.1/lib/libffi.so.6.0.4 ./ppc/libffi_3.2.1/lib/libffi.so.6.0.4: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, not stripped $ gcc -dumpversion 4.3 $ ./ex1 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 20.100000 rc = 1 - success? Y $ ./ex2 args_idx = 12 tst_func1 : 0xa 0xb 11.100000 12.1 13.100000 14.1 15.100000 16.1 17.100000 18.1 19.100000 -2.35344e-185 rc = 0 - success? N You can see above that the last parameter printed by tst_func1() is incorrect in the case of ex2 (i.e., when passed as a double). Any idea? Thanks in advance --001a113e782eccce29051c420368 Content-Type: text/x-csrc; charset=US-ASCII; name="ex.c" Content-Disposition: attachment; filename="ex.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ict8pel40 Content-length: 5145 I2luY2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1 ZGUgPGZmaS5oPgojaW5jbHVkZSAidHJnLmgiCgojZGVmaW5lIE5VTV9UU1Rf QVJHUyAgMTIKI2RlZmluZSBGRklfRk4oZikgKCh2b2lkICgqKSh2b2lkKSlm KQoKc3RhdGljIGludCB0ZXN0MSh2b2lkKSB7Cgl1aW50MzJfdCBzVmFsdWVz WzIgKiBOVU1fVFNUX0FSR1NdOwoJc2l6ZV90IHNWYWx1ZXNfaWR4ID0gMDsK CglmZmlfY2lmIGNpZjsKCWZmaV90eXBlICphcmdzW05VTV9UU1RfQVJHU107 CglzaXplX3QgYXJnc19pZHggPSAwOwoJdm9pZCAqdmFsdWVzW05VTV9UU1Rf QVJHU107CglpbnQgcmMgPSAtMTsKCQoJLyogSW5pdGlhbGl6ZSB0aGUgYXJn dW1lbnQgaW5mbyB2ZWN0b3JzICovCglhcmdzW2FyZ3NfaWR4XSA9ICZmZmlf dHlwZV9wb2ludGVyOwoJc1ZhbHVlc1tzVmFsdWVzX2lkeF0gPSAodWludDMy X3QpIDB4YTsKCXZhbHVlc1thcmdzX2lkeF0gPSAmKHNWYWx1ZXNbc1ZhbHVl c19pZHhdKTsKCSsrYXJnc19pZHg7CgkrK3NWYWx1ZXNfaWR4OwoKCWFyZ3Nb YXJnc19pZHhdID0gJmZmaV90eXBlX3BvaW50ZXI7CglzVmFsdWVzW3NWYWx1 ZXNfaWR4XSA9ICh1aW50MzJfdCkgMHhiOwoJdmFsdWVzW2FyZ3NfaWR4XSA9 ICYoc1ZhbHVlc1tzVmFsdWVzX2lkeF0pOwoJKythcmdzX2lkeDsKCSsrc1Zh bHVlc19pZHg7CgoJYXJnc1thcmdzX2lkeF0gPSAmZmZpX3R5cGVfZmxvYXQ7 Cgl7CgkJY29uc3QgZmxvYXQgdGYgPSAxMS4xOwoJCWNvbnN0IHVpbnQzMl90 ICogY29uc3QgdHAgPSAodWludDMyX3QgKikgJnRmOwoJCXNWYWx1ZXNbc1Zh bHVlc19pZHhdID0gKnRwOwoJfQoJdmFsdWVzW2FyZ3NfaWR4XSA9ICYoc1Zh bHVlc1tzVmFsdWVzX2lkeF0pOwoJKythcmdzX2lkeDsKCSsrc1ZhbHVlc19p ZHg7CgoJYXJnc1thcmdzX2lkeF0gPSAmZmZpX3R5cGVfZG91YmxlOwoJewoJ CWNvbnN0IGRvdWJsZSB0ZiA9IDEyLjE7CgkJY29uc3QgdWludDMyX3QgKiBj b25zdCB0cCA9ICh1aW50MzJfdCAqKSAmdGY7CgkJc1ZhbHVlc1tzVmFsdWVz X2lkeF0gPSAqdHA7CgkJKytzVmFsdWVzX2lkeDsKCQlzVmFsdWVzW3NWYWx1 ZXNfaWR4XSA9ICoodHAgKyAxKTsKCX0KCXZhbHVlc1thcmdzX2lkeF0gPSAm KHNWYWx1ZXNbc1ZhbHVlc19pZHggLSAxXSk7CgkrK2FyZ3NfaWR4OwoJKytz VmFsdWVzX2lkeDsKCglhcmdzW2FyZ3NfaWR4XSA9ICZmZmlfdHlwZV9mbG9h dDsKCXsKCQljb25zdCBmbG9hdCB0ZiA9IDEzLjE7CgkJY29uc3QgdWludDMy X3QgKiBjb25zdCB0cCA9ICh1aW50MzJfdCAqKSAmdGY7CgkJc1ZhbHVlc1tz VmFsdWVzX2lkeF0gPSAqdHA7Cgl9Cgl2YWx1ZXNbYXJnc19pZHhdID0gJihz VmFsdWVzW3NWYWx1ZXNfaWR4XSk7CgkrK2FyZ3NfaWR4OwoJKytzVmFsdWVz X2lkeDsKCglhcmdzW2FyZ3NfaWR4XSA9ICZmZmlfdHlwZV9kb3VibGU7Cgl7 CgkJY29uc3QgZG91YmxlIHRmID0gMTQuMTsKCQljb25zdCB1aW50MzJfdCAq IGNvbnN0IHRwID0gKHVpbnQzMl90ICopICZ0ZjsKCQlzVmFsdWVzW3NWYWx1 ZXNfaWR4XSA9ICp0cDsKCQkrK3NWYWx1ZXNfaWR4OwoJCXNWYWx1ZXNbc1Zh bHVlc19pZHhdID0gKih0cCArIDEpOwoJfQoJdmFsdWVzW2FyZ3NfaWR4XSA9 ICYoc1ZhbHVlc1tzVmFsdWVzX2lkeCAtIDFdKTsKCSsrYXJnc19pZHg7Cgkr K3NWYWx1ZXNfaWR4OwoKCWFyZ3NbYXJnc19pZHhdID0gJmZmaV90eXBlX2Zs b2F0OwoJewoJCWNvbnN0IGZsb2F0IHRmID0gMTUuMTsKCQljb25zdCB1aW50 MzJfdCAqIGNvbnN0IHRwID0gKHVpbnQzMl90ICopICZ0ZjsKCQlzVmFsdWVz W3NWYWx1ZXNfaWR4XSA9ICp0cDsKCX0KCXZhbHVlc1thcmdzX2lkeF0gPSAm KHNWYWx1ZXNbc1ZhbHVlc19pZHhdKTsKCSsrYXJnc19pZHg7CgkrK3NWYWx1 ZXNfaWR4OwoKCWFyZ3NbYXJnc19pZHhdID0gJmZmaV90eXBlX2RvdWJsZTsK CXsKCQljb25zdCBkb3VibGUgdGYgPSAxNi4xOwoJCWNvbnN0IHVpbnQzMl90 ICogY29uc3QgdHAgPSAodWludDMyX3QgKikgJnRmOwoJCXNWYWx1ZXNbc1Zh bHVlc19pZHhdID0gKnRwOwoJCSsrc1ZhbHVlc19pZHg7CgkJc1ZhbHVlc1tz VmFsdWVzX2lkeF0gPSAqKHRwICsgMSk7Cgl9Cgl2YWx1ZXNbYXJnc19pZHhd ID0gJihzVmFsdWVzW3NWYWx1ZXNfaWR4IC0gMV0pOwoJKythcmdzX2lkeDsK CSsrc1ZhbHVlc19pZHg7CgoJYXJnc1thcmdzX2lkeF0gPSAmZmZpX3R5cGVf ZmxvYXQ7Cgl7CgkJY29uc3QgZmxvYXQgdGYgPSAxNy4xOwoJCWNvbnN0IHVp bnQzMl90ICogY29uc3QgdHAgPSAodWludDMyX3QgKikgJnRmOwoJCXNWYWx1 ZXNbc1ZhbHVlc19pZHhdID0gKnRwOwoJfQoJdmFsdWVzW2FyZ3NfaWR4XSA9 ICYoc1ZhbHVlc1tzVmFsdWVzX2lkeF0pOwoJKythcmdzX2lkeDsKCSsrc1Zh bHVlc19pZHg7CgoJYXJnc1thcmdzX2lkeF0gPSAmZmZpX3R5cGVfZG91Ymxl OwoJewoJCWNvbnN0IGRvdWJsZSB0ZiA9IDE4LjE7CgkJY29uc3QgdWludDMy X3QgKiBjb25zdCB0cCA9ICh1aW50MzJfdCAqKSAmdGY7CgkJc1ZhbHVlc1tz VmFsdWVzX2lkeF0gPSAqdHA7CgkJKytzVmFsdWVzX2lkeDsKCQlzVmFsdWVz W3NWYWx1ZXNfaWR4XSA9ICoodHAgKyAxKTsKCX0KCXZhbHVlc1thcmdzX2lk eF0gPSAmKHNWYWx1ZXNbc1ZhbHVlc19pZHggLSAxXSk7CgkrK2FyZ3NfaWR4 OwoJKytzVmFsdWVzX2lkeDsKCglhcmdzW2FyZ3NfaWR4XSA9ICZmZmlfdHlw ZV9mbG9hdDsKCXsKCQljb25zdCBmbG9hdCB0ZiA9IDE5LjE7CgkJY29uc3Qg dWludDMyX3QgKiBjb25zdCB0cCA9ICh1aW50MzJfdCAqKSAmdGY7CgkJc1Zh bHVlc1tzVmFsdWVzX2lkeF0gPSAqdHA7Cgl9Cgl2YWx1ZXNbYXJnc19pZHhd ID0gJihzVmFsdWVzW3NWYWx1ZXNfaWR4XSk7CgkrK2FyZ3NfaWR4OwoJKytz VmFsdWVzX2lkeDsKCiNpZmRlZiBfX1VTRV9GNl9fCglhcmdzW2FyZ3NfaWR4 XSA9ICZmZmlfdHlwZV9mbG9hdDsKCXsKCQljb25zdCBmbG9hdCB0ZiA9IDIw LjE7CgkJY29uc3QgdWludDMyX3QgKiBjb25zdCB0cCA9ICh1aW50MzJfdCAq KSAmdGY7CgkJc1ZhbHVlc1tzVmFsdWVzX2lkeF0gPSAqdHA7Cgl9Cgl2YWx1 ZXNbYXJnc19pZHhdID0gJihzVmFsdWVzW3NWYWx1ZXNfaWR4XSk7CgkrK2Fy Z3NfaWR4OwoJKytzVmFsdWVzX2lkeDsKI2Vsc2UgLyogX19VU0VfRjZfXyAq LwoJYXJnc1thcmdzX2lkeF0gPSAmZmZpX3R5cGVfZG91YmxlOwoJewoJCWNv bnN0IGRvdWJsZSB0ZiA9IDIwLjE7CgkJY29uc3QgdWludDMyX3QgKiBjb25z dCB0cCA9ICh1aW50MzJfdCAqKSAmdGY7CgkJc1ZhbHVlc1tzVmFsdWVzX2lk eF0gPSAqdHA7CgkJKytzVmFsdWVzX2lkeDsKCQlzVmFsdWVzW3NWYWx1ZXNf aWR4XSA9ICoodHAgKyAxKTsKCX0KCXZhbHVlc1thcmdzX2lkeF0gPSAmKHNW YWx1ZXNbc1ZhbHVlc19pZHggLSAxXSk7CgkrK2FyZ3NfaWR4OwoJKytzVmFs dWVzX2lkeDsKI2VuZGlmIC8qIF9fVVNFX0Y2X18gKi8KCglwcmludGYoImFy Z3NfaWR4ID0gJWRcbiIsIGFyZ3NfaWR4KTsKCgkvKiBJbml0aWFsaXplIHRo ZSBjaWYgYW5kIGlzc3VlIGZmaSBjYWxsICovCglpZiAoZmZpX3ByZXBfY2lm KCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgTlVNX1RTVF9BUkdTLCAmZmZpX3R5 cGVfdWludCwgYXJncykgPT0gRkZJX09LKSB7CgkJZmZpX2NhbGwoJmNpZiwg RkZJX0ZOKHRzdF9mdW5jMSksICZyYywgdmFsdWVzKTsKCQlwcmludGYoInJj ID0gJWQgLSBzdWNjZXNzPyAlY1xuIiwgcmMsICgxID09IHJjKSA/ICdZJyA6 ICdOJyk7Cgl9CgoJcmV0dXJuIHJjOwp9CgppbnQgbWFpbigpIHsKCXJldHVy biB0ZXN0MSgpOwp9Cgo= --001a113e782eccce29051c420368 Content-Type: application/octet-stream; name=Makefile Content-Disposition: attachment; filename=Makefile Content-Transfer-Encoding: base64 X-Attachment-Id: f_ict8pemx1 Content-length: 964 YWxsOiB4ODYKCng4NjogeDg2X2V4MSB4ODZfZXgyCgpwcGM6IHBwY19leDEg cHBjX2V4MgoKdHJnMToKCWdjYyAtRF9fVVNFX0Y2X18gLWcgLW0zMiAtYyB0 cmcuYyAtbyB0cmcxLm8KCng4Nl9leDE6IHRyZzEKCWdjYyAtRF9fVVNFX0Y2 X18gLWcgLW0zMiAtSS4veDg2L2xpYmZmaV8zLjIuMS9saWIvbGliZmZpLTMu Mi4xL2luY2x1ZGUvIC1MLi94ODYvbGliZmZpXzMuMi4xL2xpYi8gZXguYyAt byBleDEgdHJnMS5vIC1sZmZpICAKCnBwY19leDE6IHRyZzEKCWdjYyAtRF9f VVNFX0Y2X18gLWcgLW0zMiAtSS4vcHBjL2xpYmZmaV8zLjIuMS9saWIvbGli ZmZpLTMuMi4xL2luY2x1ZGUvIC1MLi9wcGMvbGliZmZpXzMuMi4xL2xpYi8g ZXguYyAtbyBleDEgdHJnMS5vIC1sZmZpICAKCnRyZzI6CglnY2MgLWcgLW0z MiAtYyB0cmcuYyAtbyB0cmcyLm8KCng4Nl9leDI6IHRyZzIKCWdjYyAtZyAt bTMyIC1JLi94ODYvbGliZmZpXzMuMi4xL2xpYi9saWJmZmktMy4yLjEvaW5j bHVkZS8gLUwuL3g4Ni9saWJmZmlfMy4yLjEvbGliLyBleC5jIC1vIGV4MiB0 cmcyLm8gLWxmZmkgIAoKcHBjX2V4MjogdHJnMgoJZ2NjIC1nIC1tMzIgLUku L3BwYy9saWJmZmlfMy4yLjEvbGliL2xpYmZmaS0zLjIuMS9pbmNsdWRlLyAt TC4vcHBjL2xpYmZmaV8zLjIuMS9saWIvIGV4LmMgLW8gZXgyIHRyZzIubyAt bGZmaSAgCgpjbGVhbjoKCXJtIC1mICoubyBleDEgZXgyCgo= --001a113e782eccce29051c420368 Content-Type: text/x-csrc; charset=US-ASCII; name="trg.c" Content-Disposition: attachment; filename="trg.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ict8peo52 Content-length: 1692 I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgdHN0X2Z1bmMxKGNvbnN0IGNoYXIg KiBwMSwgY29uc3QgY2hhciAqIHAyLCBmbG9hdCBmMSwgZG91YmxlIGQxLCBm bG9hdCBmMiwgZG91YmxlIGQyLCAKI2lmZGVmIF9fVVNFX0Y2X18KCWZsb2F0 IGYzLCBkb3VibGUgZDMsIGZsb2F0IGY0LCBkb3VibGUgZDQsIGZsb2F0IGY1 LCBmbG9hdCBmNikKI2Vsc2UgLyogX19VU0VfRjZfXyAqLwoJZmxvYXQgZjMs IGRvdWJsZSBkMywgZmxvYXQgZjQsIGRvdWJsZSBkNCwgZmxvYXQgZjUsIGRv dWJsZSBkNSkKI2VuZGlmIC8qIF9fVVNFX0Y2X18gKi8KewoJY29uc3QgaW50 IHN1Y2Nlc3MgPQoJCSgoY29uc3QgY2hhciAqKSAweGEgICAgICAgID09IHAx KSAmJgoJCSgoY29uc3QgY2hhciAqKSAweGIgICAgICAgID09IHAyKSAmJgoJ CSgoZmxvYXQpIDExLjEgICAgICAgICAgICAgID09IGYxKSAmJgoJCSgoZG91 YmxlKSAxMi4xICAgICAgICAgICAgID09IGQxKSAmJgoJCSgoZmxvYXQpIDEz LjEgICAgICAgICAgICAgID09IGYyKSAmJgoJCSgoZG91YmxlKSAxNC4xICAg ICAgICAgICAgID09IGQyKSAmJgoJCSgoZmxvYXQpIDE1LjEgICAgICAgICAg ICAgID09IGYzKSAmJgoJCSgoZG91YmxlKSAxNi4xICAgICAgICAgICAgID09 IGQzKSAmJgoJCSgoZmxvYXQpIDE3LjEgICAgICAgICAgICAgID09IGY0KSAm JgoJCSgoZG91YmxlKSAxOC4xICAgICAgICAgICAgID09IGQ0KSAmJgoJCSgo ZmxvYXQpIDE5LjEgICAgICAgICAgICAgID09IGY1KSAmJgojaWZkZWYgX19V U0VfRjZfXwoJCSgoZmxvYXQpIDIwLjEgICAgICAgICAgICAgID09IGY2KTsK I2Vsc2UgLyogX19VU0VfRjZfXyAqLwoJCSgoZG91YmxlKSAyMC4xICAgICAg ICAgICAgID09IGQ1KTsKI2VuZGlmIC8qIF9fVVNFX0Y2X18gKi8KCiNpZmRl ZiBfX1VTRV9GNl9fCglwcmludGYoIiVzIDogJXAgJXAgJWYgJWcgJWYgJWcg JWYgJWcgJWYgJWcgJWYgJWZcbiIsCiNlbHNlIC8qIF9fVVNFX0Y2X18gKi8K CXByaW50ZigiJXMgOiAlcCAlcCAlZiAlZyAlZiAlZyAlZiAlZyAlZiAlZyAl ZiAlZ1xuIiwKI2VuZGlmIC8qIF9fVVNFX0Y2X18gKi8KCQlfX2Z1bmNfXywK CQlwMSwKCQlwMiwKCQlmMSwKCQlkMSwKCQlmMiwKCQlkMiwKCQlmMywKCQlk MywKCQlmNCwKCQlkNCwKCQlmNSwKI2lmZGVmIF9fVVNFX0Y2X18KCQlmNik7 CiNlbHNlIC8qIF9fVVNFX0Y2X18gKi8KCQlkNSk7CiNlbmRpZiAvKiBfX1VT RV9GNl9fICovCgoJcmV0dXJuIHN1Y2Nlc3M7Cn0KCg== --001a113e782eccce29051c420368 Content-Type: text/x-chdr; charset=US-ASCII; name="trg.h" Content-Disposition: attachment; filename="trg.h" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ict8pep03 Content-length: 472 I2lmbmRlZiBfX1RSR19IX18KI2RlZmluZSBfX1RSR19IX18KCmludCB0c3Rf ZnVuYzEoY29uc3QgY2hhciAqIHAxLCBjb25zdCBjaGFyICogcDIsIGZsb2F0 IGYxLCBkb3VibGUgZDEsIGZsb2F0IGYyLCBkb3VibGUgZDIsIAojaWZkZWYg X19VU0VfRjZfXwoJZmxvYXQgZjMsIGRvdWJsZSBkMywgZmxvYXQgZjQsIGRv dWJsZSBkNCwgZmxvYXQgZjUsIGZsb2F0IGY2KTsKI2Vsc2UgLyogX19VU0Vf RjZfXyAqLwoJZmxvYXQgZjMsIGRvdWJsZSBkMywgZmxvYXQgZjQsIGRvdWJs ZSBkNCwgZmxvYXQgZjUsIGRvdWJsZSBkNSk7CiNlbmRpZiAvKiBfX1VTRV9G Nl9fICovCgojZW5kaWYgLyogX19UUkdfSF9fICovCgo= --001a113e782eccce29051c420368--