summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/binutils/gdb/config/sparc/tm-sp64.h
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/binutils/gdb/config/sparc/tm-sp64.h')
-rw-r--r--gnu/usr.bin/binutils/gdb/config/sparc/tm-sp64.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/gnu/usr.bin/binutils/gdb/config/sparc/tm-sp64.h b/gnu/usr.bin/binutils/gdb/config/sparc/tm-sp64.h
index 740b032e509..21a1d8c2bf6 100644
--- a/gnu/usr.bin/binutils/gdb/config/sparc/tm-sp64.h
+++ b/gnu/usr.bin/binutils/gdb/config/sparc/tm-sp64.h
@@ -224,7 +224,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
On sparc64, all structs are returned via a pointer. */
#undef USE_STRUCT_CONVENTION
-#define USE_STRUCT_CONVENTION(gcc_p, type) 1
+#define USE_STRUCT_CONVENTION(gcc_p, type) \
+ (TYPE_LENGTH (type) > 32)
/* Store the address of the place in which to copy the structure the
subroutine will return. This is called from call_function. */
@@ -293,3 +294,7 @@ get_longjmp_target PARAMS ((CORE_ADDR *));
#define TARGET_WRITE_FP(val) \
sparc64_write_fp(val)
+
+#undef REG_STRUCT_HAS_ADDR
+#define REG_STRUCT_HAS_ADDR(gcc_p, type) \
+ (TYPE_LENGTH (type) > 32)