aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli/cli-script.c
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2025-08-08 07:19:50 +0200
committerTom de Vries <tdevries@suse.de>2025-08-08 07:19:50 +0200
commit13f1820106cf8888d8df5fcc0f01e55ed1a10db4 (patch)
tree69918ee46336a38ce7733655fd5f6e3edb62d621 /gdb/cli/cli-script.c
parentb2a61519d18c27fb4b93ec786ce6bbf45060311a (diff)
downloadbinutils-13f1820106cf8888d8df5fcc0f01e55ed1a10db4.zip
binutils-13f1820106cf8888d8df5fcc0f01e55ed1a10db4.tar.gz
binutils-13f1820106cf8888d8df5fcc0f01e55ed1a10db4.tar.bz2
[gdb/tdep] Fix inferior call return of small char array for ppc64 v1 abi
In ppc64_sysv_abi_return_value I came across this if clause: ... /* Small character arrays are returned, right justified, in r3. */ if (valtype->code () == TYPE_CODE_ARRAY && !valtype->is_vector () && valtype->length () <= 8 && valtype->target_type ()->code () == TYPE_CODE_INT && valtype->target_type ()->length () == 1) ... I decided to write a test-case to try and trigger this. AFAIU, in C/C++, we're not allowed to return an array, so I wrote an Ada test-case instead, with a function returning this type: ... type T is new String (1 .. 4); ... After doing so I realized that the clause above is not triggering because valtype->target_type ()->code () == TYPE_CODE_CHAR. Fix this by allowing both TYPE_CODE_INT and TYPE_CODE_CHAR. Then I realized that the specific "small character array" handling comes from the v1 abi. Add a check for this as well. Tested on ppc64le-linux, with v2 abi. Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdb/cli/cli-script.c')
0 files changed, 0 insertions, 0 deletions