[issue39632] variadic function call broken on armhf when passing a float argument

2021-07-23 Thread Nicolas Dessart


Nicolas Dessart  added the comment:

I've just rebased this PR but the CI builds failed (for unrelated reasons?).

That being said I think that this particular issue should mostly be resolved by 
bpo-41100 and PR-22855 in particular. My PR 18560 still brings the support for 
Ellipsis/... inside ctypes function arguments type list. This is nice because 
it allows ctypes to automatically perform the necessary type promotions even if 
a variadic function is called without extra arguments.

Since I've rebased my PR on top of bpo-41100 PRs, I had to resolve a few 
conflicts but didn't tried to limit the diff to the minimum (PR 18560 may be 
simplified).

https://bugs.python.org/issue41100
https://github.com/python/cpython/pull/22855

--
versions: +Python 3.10, Python 3.11

___
Python tracker 
<https://bugs.python.org/issue39632>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39632] variadic function call broken on armhf when passing a float argument

2020-02-20 Thread Nicolas Dessart


Nicolas Dessart  added the comment:

As I said in the associated PR, the build is failing on macOS because ctypes 
uses an obsolete libffi version bundled into Modules/_ctypes/libffi_osx for 
this platform. This old version of libffi is missing ffi_prep_cif_var.

There is an open issue that propose to remove the bundled libffi for OSX.
https://bugs.python.org/issue28491

--
versions:  -Python 2.7, Python 3.5, Python 3.6

___
Python tracker 
<https://bugs.python.org/issue39632>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39632] variadic function call broken on armhf when passing a float argument

2020-02-19 Thread Nicolas Dessart


Change by Nicolas Dessart :


--
versions: +Python 2.7, Python 3.5, Python 3.6, Python 3.7, Python 3.8

___
Python tracker 
<https://bugs.python.org/issue39632>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39632] variadic function call broken on armhf when passing a float argument

2020-02-19 Thread Nicolas Dessart


Change by Nicolas Dessart :


--
pull_requests: +17940
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/18560

___
Python tracker 
<https://bugs.python.org/issue39632>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39632] variadic function call broken on armhf when passing a float argument

2020-02-14 Thread Nicolas Dessart


Change by Nicolas Dessart :


Removed file: 
https://bugs.python.org/file48895/ctypes_variadic_function_tests.diff

___
Python tracker 
<https://bugs.python.org/issue39632>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39632] variadic function call broken on armhf when passing a float argument

2020-02-14 Thread Nicolas Dessart


Change by Nicolas Dessart :


Added file: 
https://bugs.python.org/file48896/ctypes_variadic_function_tests.diff

___
Python tracker 
<https://bugs.python.org/issue39632>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39632] variadic function call broken on armhf when passing a float argument

2020-02-14 Thread Nicolas Dessart


New submission from Nicolas Dessart :

On armhf and for variadic functions (and contrary to non-variadic functions), 
the VFP co-processor registers are not used for float argument parameter 
passing. This specificity is apparently completely disregarded by ctypes which 
always uses `ffi_prep_cif` to prepare the parameter passing of a function while 
it should most probably use `ffi_prep_cif_var` for variadic functions.

As such variadic function call with float arguments through ctypes
is currently broken on armhf targets.

I think that ctypes API should be updated to let the user specify if a function 
is variadic.

I've attached a patch to the ctypes unit tests that I'm using to reproduce this 
bug.


pi@raspberrypi:~/code/cpython $ ./python -m test test_ctypes
0:00:00 load avg: 0.00 Run tests sequentially
0:00:00 load avg: 0.00 [1/1] test_ctypes
_testfunc_d_bhilfd_var got 2 3 4 -1242230680 -0.00 -0.00
test test_ctypes failed -- Traceback (most recent call last):
  File "/home/pi/code/cpython/Lib/ctypes/test/test_functions.py", line 146, in 
test_doubleresult_var
self.assertEqual(result, 21)
AssertionError: -7.086855952261741e-44 != 21

test_ctypes failed

== Tests result: FAILURE ==

1 test failed:
test_ctypes

Total duration: 3.8 sec
Tests result: FAILURE

--
components: ctypes
files: ctypes_variadic_function_tests.diff
keywords: patch
messages: 361992
nosy: Nicolas Dessart
priority: normal
severity: normal
status: open
title: variadic function call broken on armhf when passing a float argument
versions: Python 3.9
Added file: 
https://bugs.python.org/file48895/ctypes_variadic_function_tests.diff

___
Python tracker 
<https://bugs.python.org/issue39632>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com