S390: Vector ABI support
authorAndreas Arnez <arnez@linux.vnet.ibm.com>
Mon, 27 Apr 2015 09:38:47 +0000 (11:38 +0200)
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Mon, 27 Apr 2015 09:38:47 +0000 (11:38 +0200)
commit417c80f9e456477935cdc74461d35630dfdbfdff
tree905644827e03965b0fa1c7358897c8448069a4a8
parent4e65a17e62c7c2f3c0409d9769cca2e916a88379
S390: Vector ABI support

With the S390 vector ABI, vector registers are used for passing vector
arguments and for returning a vector.  Support this ABI in inferior
function calls and when setting or retrieving a function's return
value.

gdb/ChangeLog:

* s390-linux-tdep.c: Include "elf/s390.h" and "elf-bfd.h".
(enum s390_vector_abi_kind): New enum.
(struct gdbarch_tdep)<vector_abi>: New field.
(s390_effective_inner_type): Add parameter min_size.  Stop
unwrapping if the inner type is smaller than min_size.
(s390_function_arg_float): Adjust call to
s390_effective_inner_type.
(s390_function_arg_vector): New function.
(s390_function_arg_integer): Adjust comment.
(struct s390_arg_state)<vr>: New field.
(s390_handle_arg): Add parameter 'is_unnamed'.  Pass vector
arguments according to vector ABI when appropriate.
(s390_push_dummy_call): Initialize the argument state's field
'vr'.  Adjust calls to s390_handle_arg.
(s390_register_return_value): Handle vector return values.
(s390_return_value): Apply the "register" return value convention
to a vector when appropriate.
(s390_gdbarch_init): Initialize tdep->vector_abi.
* NEWS: Announce S390 vector ABI support.
gdb/ChangeLog
gdb/NEWS
gdb/s390-linux-tdep.c