From 9925b9286107fabdb193a9ba47f330d6944195b4 Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Tue, 6 Apr 1993 21:20:30 +0000 Subject: [PATCH] * values.c (USE_STRUCT_RETURN): Only use gcc wierdness for gcc1. --- gdb/ChangeLog | 2 ++ gdb/values.c | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 243cee83a0..88cf440402 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,7 @@ Tue Apr 6 09:54:29 1993 Jim Kingdon (kingdon@cygnus.com) + * values.c (USE_STRUCT_RETURN): Only use gcc wierdness for gcc1. + * xcoffread.c (read_xcoff_symtab): Deal correctly with symbols of exactly 8 characters. diff --git a/gdb/values.c b/gdb/values.c index 12f8ce9aff..58c19bfc19 100644 --- a/gdb/values.c +++ b/gdb/values.c @@ -1484,13 +1484,21 @@ value_being_returned (valtype, retbuf, struct_return) On most machines, the struct convention is used unless we are using gcc and the type is of a special size. */ +/* As of about 31 Mar 93, GCC was changed to be compatible with the + native compiler. GCC 2.3.3 was the last release that did it the + old way. Since gcc2_compiled was not changed, we have no + way to correctly win in all cases, so we just do the right thing + for gcc1 and for gcc2 after this change. Thus it loses for gcc + 2.0-2.3.3. This is somewhat unfortunate, but changing gcc2_compiled + would cause more chaos than dealing with some struct returns being + handled wrong. */ #if !defined (USE_STRUCT_CONVENTION) #define USE_STRUCT_CONVENTION(gcc_p, type)\ - (!((gcc_p) && (TYPE_LENGTH (value_type) == 1 \ - || TYPE_LENGTH (value_type) == 2 \ - || TYPE_LENGTH (value_type) == 4 \ - || TYPE_LENGTH (value_type) == 8 \ - ) \ + (!((gcc_p == 1) && (TYPE_LENGTH (value_type) == 1 \ + || TYPE_LENGTH (value_type) == 2 \ + || TYPE_LENGTH (value_type) == 4 \ + || TYPE_LENGTH (value_type) == 8 \ + ) \ )) #endif -- 2.34.1