This is the mail archive of the gdb-patches@sourceware.cygnus.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RFA: put COERCE_FLOAT_TO_DOUBLE under gdbarch's control



For this, I need approval from:

- David Taylor, for the changes to valops.c and value.h
- Andrew Cagney, for the changes to gdbarch.{sh,c,h} (which you've
  seen before), and to mips-tdep.c (you haven't seen those before).

The changes to the eight target-specific files are trivial, so I don't
think we need approval from those port maintainers.

It still compiles and runs for MIPS and D10V (which are multi-arched
targets) and for Solaris UltraSPARC (which isn't).


gdb/ChangeLog:
2000-02-18  Jim Blandy  <jimb@redhat.com>

	* gdbarch.sh: Make the `default' field really default to zero, as
 	documented.

	Bring COERCE_FLOAT_TO_DOUBLE under gdbarch's control.
	* valops.c (COERCE_FLOAT_TO_DOUBLE): Rework definition to be
	more function-like.
	(default_coerce_float_to_double, standard_coerce_float_to_double):
	New functions.
	* value.h (default_coerce_float_to_double,
	standard_coerce_float_to_double): New declarations for the above.
	* gdbarch.sh (coerce_float_to_double): New entry, replacing macro.
	* gdbarch.c, gdbarch.h: Regenerated.
	* tm-alpha.h, tm-fr30.h, tm-m32r.h, tm-mips.h, tm-hppa.h,
 	tm-rs6000.h, tm-sh.h, tm-sparc.h (COERCE_FLOAT_TO_DOUBLE): Change
 	definitions.
	* mips-tdep.c (mips_coerce_float_to_double): Supply our own custom
	function here.
	(mips_gdbarch_init): Install that as our coerce_float_to_double
	function.

gdb/doc/ChangeLog:
2000-02-18  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo: Document COERCE_FLOAT_TO_DOUBLE --- the new form.

Index: valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.1.1.11
diff -c -r1.1.1.11 valops.c
*** valops.c	2000/02/01 03:19:12	1.1.1.11
--- valops.c	2000/02/18 22:29:53
***************
*** 34,48 ****
  #include <errno.h>
  #include "gdb_string.h"
  
- /* Default to coercing float to double in function calls only when there is
-    no prototype.  Otherwise on targets where the debug information is incorrect
-    for either the prototype or non-prototype case, we can force it by defining
-    COERCE_FLOAT_TO_DOUBLE in the target configuration file. */
- 
- #ifndef COERCE_FLOAT_TO_DOUBLE
- #define COERCE_FLOAT_TO_DOUBLE (param_type == NULL)
- #endif
- 
  /* Flag indicating HP compilers were used; needed to correctly handle some
     value operations with HP aCC code/runtime. */
  extern int hp_som_som_object_present;
--- 34,39 ----
***************
*** 1124,1129 ****
--- 1115,1156 ----
  }
  
  
+ /* If we have no definition for this macro, either from the target or
+    from gdbarch, provide a default.  */
+ #ifndef COERCE_FLOAT_TO_DOUBLE
+ #define COERCE_FLOAT_TO_DOUBLE(formal, actual) \
+   (default_coerce_float_to_double ((formal), (actual)))
+ #endif   
+ 
+ 
+ /* A default function for COERCE_FLOAT_TO_DOUBLE: do the coercion only
+    when we don't have any type for the argument at hand.  This occurs
+    when we have no debug info, or when passing varargs.
+ 
+    This is an annoying default: the rule the compiler follows is to do
+    the standard promotions whenever there is no prototype in scope,
+    and almost all targets want this behavior.  But there are some old
+    architectures which want this odd behavior.  If you want to go
+    through them all and fix them, please do.  Modern gdbarch-style
+    targets may find it convenient to use standard_coerce_float_to_double.  */
+ int
+ default_coerce_float_to_double (struct type *formal, struct type *actual)
+ {
+   return formal == NULL;
+ }
+ 
+ 
+ /* Always coerce floats to doubles when there is no prototype in scope.
+    If your architecture follows the standard type promotion rules for
+    calling unprototyped functions, your gdbarch init function can pass
+    this function to set_gdbarch_coerce_float_to_double to use its logic.  */
+ int
+ standard_coerce_float_to_double (struct type *formal, struct type *actual)
+ {
+   return 1;
+ }
+ 
+ 
  /* Perform the standard coercions that are specified
     for arguments to be passed to C functions.
  
***************
*** 1171,1177 ****
           non-prototyped case.  As many debugging formats include
           no information about prototyping, we have to live with
           COERCE_FLOAT_TO_DOUBLE for now.  */
!       if (!is_prototyped && COERCE_FLOAT_TO_DOUBLE)
  	{
  	  if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
  	    type = builtin_type_double;
--- 1198,1204 ----
           non-prototyped case.  As many debugging formats include
           no information about prototyping, we have to live with
           COERCE_FLOAT_TO_DOUBLE for now.  */
!       if (!is_prototyped && COERCE_FLOAT_TO_DOUBLE (param_type, arg_type))
  	{
  	  if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
  	    type = builtin_type_double;
Index: value.h
===================================================================
RCS file: /cvs/src/src/gdb/value.h,v
retrieving revision 1.1.1.10
diff -c -r1.1.1.10 value.h
*** value.h	2000/02/02 00:21:11	1.1.1.10
--- value.h	2000/02/18 22:29:54
***************
*** 549,554 ****
--- 549,558 ----
  
  extern value_ptr call_function_by_hand PARAMS ((value_ptr, int, value_ptr *));
  
+ extern int default_coerce_float_to_double (struct type *, struct type *);
+ 
+ extern int standard_coerce_float_to_double (struct type *, struct type *);
+ 
  extern value_ptr value_literal_complex PARAMS ((value_ptr, value_ptr, struct type *));
  
  extern void find_rt_vbase_offset PARAMS ((struct type *, struct type *, char *, int, int *, int *));
Index: gdbarch.sh
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.sh,v
retrieving revision 1.1.1.5
diff -c -r1.1.1.5 gdbarch.sh
*** gdbarch.sh	1999/12/14 01:05:30	1.1.1.5
--- gdbarch.sh	2000/02/18 22:29:55
***************
*** 180,185 ****
--- 180,186 ----
  #
  v:2:BELIEVE_PCC_PROMOTION:int:believe_pcc_promotion::::0:::::#
  v:2:BELIEVE_PCC_PROMOTION_TYPE:int:believe_pcc_promotion_type::::0:::::#
+ f:2:COERCE_FLOAT_TO_DOUBLE:int:coerce_float_to_double:struct type *formal, struct type *actual:formal, actual:::default_coerce_float_to_double
  f:1:GET_SAVED_REGISTER:void:get_saved_register:char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval:raw_buffer, optimized, addrp, frame, regnum, lval::generic_get_saved_register:0
  #
  f:1:REGISTER_CONVERTIBLE:int:register_convertible:int nr:nr::0:0
***************
*** 881,887 ****
  function_list | while eval read $read
  do
    case "${class}" in
!     "i" ) echo "  ${default}," ;;
    esac
  done
  cat <<EOF
--- 882,894 ----
  function_list | while eval read $read
  do
    case "${class}" in
!     "i" ) 
!       if [ "${default}" = "" ]; then
!         echo "  0,"
!       else
!         echo "  ${default},"
!       fi
!     ;;
    esac
  done
  cat <<EOF
***************
*** 894,900 ****
  function_list | while eval read $read
  do
    case "${class}" in
!     "f" | "v" ) echo "  ${default}," ;;
    esac
  done
  cat <<EOF
--- 901,913 ----
  function_list | while eval read $read
  do
    case "${class}" in
!     "f" | "v" )
!       if [ "${default}" = "" ]; then
!         echo "  0,"
!       else
!         echo "  ${default},"
!       fi
!     ;;
    esac
  done
  cat <<EOF
Index: gdbarch.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.c,v
retrieving revision 1.2
diff -c -r1.2 gdbarch.c
*** gdbarch.c	2000/02/09 08:52:45	1.2
--- gdbarch.c	2000/02/18 22:29:56
***************
*** 47,53 ****
  #include "frame.h"
  #include "inferior.h"
  #include "breakpoint.h"
! #include "gdb_wait.h"
  #include "gdbcore.h"
  #include "gdbcmd.h"
  #include "target.h"
--- 47,53 ----
  #include "frame.h"
  #include "inferior.h"
  #include "breakpoint.h"
! #include "wait.h"
  #include "gdbcore.h"
  #include "gdbcmd.h"
  #include "target.h"
***************
*** 169,174 ****
--- 169,175 ----
    gdbarch_fix_call_dummy_ftype *fix_call_dummy;
    int believe_pcc_promotion;
    int believe_pcc_promotion_type;
+   gdbarch_coerce_float_to_double_ftype *coerce_float_to_double;
    gdbarch_get_saved_register_ftype *get_saved_register;
    gdbarch_register_convertible_ftype *register_convertible;
    gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual;
***************
*** 268,273 ****
--- 269,275 ----
    0,
    0,
    0,
+   0,
    generic_get_saved_register,
    0,
    0,
***************
*** 343,348 ****
--- 345,351 ----
    gdbarch->call_dummy_length = -1;
    gdbarch->call_dummy_p = -1;
    gdbarch->call_dummy_stack_adjust_p = -1;
+   gdbarch->coerce_float_to_double = default_coerce_float_to_double;
    gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint;
    gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint;
    gdbarch->decr_pc_after_break = -1;
***************
*** 488,493 ****
--- 491,499 ----
    if ((GDB_MULTI_ARCH >= 2)
        && (gdbarch->fix_call_dummy == 0))
      internal_error ("gdbarch: verify_gdbarch: fix_call_dummy invalid");
+   if ((GDB_MULTI_ARCH >= 2)
+       && (gdbarch->coerce_float_to_double == default_coerce_float_to_double))
+     internal_error ("gdbarch: verify_gdbarch: coerce_float_to_double invalid");
    if ((GDB_MULTI_ARCH >= 1)
        && (gdbarch->get_saved_register == 0))
      internal_error ("gdbarch: verify_gdbarch: get_saved_register invalid");
***************
*** 770,775 ****
--- 776,785 ----
                        (long) BELIEVE_PCC_PROMOTION_TYPE);
  #endif
    fprintf_unfiltered (gdb_stdlog,
+                       "gdbarch_update: COERCE_FLOAT_TO_DOUBLE = 0x%08lx\n",
+                       (long) current_gdbarch->coerce_float_to_double
+                       /*COERCE_FLOAT_TO_DOUBLE ()*/);
+   fprintf_unfiltered (gdb_stdlog,
                        "gdbarch_update: GET_SAVED_REGISTER = 0x%08lx\n",
                        (long) current_gdbarch->get_saved_register
                        /*GET_SAVED_REGISTER ()*/);
***************
*** 1730,1735 ****
--- 1740,1763 ----
                                          int believe_pcc_promotion_type)
  {
    gdbarch->believe_pcc_promotion_type = believe_pcc_promotion_type;
+ }
+ 
+ int
+ gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual)
+ {
+   if (gdbarch->coerce_float_to_double == 0)
+     internal_error ("gdbarch: gdbarch_coerce_float_to_double invalid");
+   if (gdbarch_debug >= 2)
+     /* FIXME: gdb_std??? */
+     fprintf_unfiltered (gdb_stdlog, "gdbarch_coerce_float_to_double called\n");
+   return gdbarch->coerce_float_to_double (formal, actual);
+ }
+ 
+ void
+ set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch,
+                                     gdbarch_coerce_float_to_double_ftype coerce_float_to_double)
+ {
+   gdbarch->coerce_float_to_double = coerce_float_to_double;
  }
  
  void
Index: gdbarch.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.h,v
retrieving revision 1.1.1.15
diff -c -r1.1.1.15 gdbarch.h
*** gdbarch.h	1999/12/14 01:05:30	1.1.1.15
--- gdbarch.h	2000/02/18 22:29:57
***************
*** 465,470 ****
--- 465,479 ----
  #endif
  #endif
  
+ typedef int (gdbarch_coerce_float_to_double_ftype) (struct type *formal, struct type *actual);
+ extern int gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual);
+ extern void set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, gdbarch_coerce_float_to_double_ftype *coerce_float_to_double);
+ #if GDB_MULTI_ARCH
+ #if (GDB_MULTI_ARCH > 1) || !defined (COERCE_FLOAT_TO_DOUBLE)
+ #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (gdbarch_coerce_float_to_double (current_gdbarch, formal, actual))
+ #endif
+ #endif
+ 
  typedef void (gdbarch_get_saved_register_ftype) (char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
  extern void gdbarch_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
  extern void set_gdbarch_get_saved_register (struct gdbarch *gdbarch, gdbarch_get_saved_register_ftype *get_saved_register);
Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.1.1.14
diff -c -r1.1.1.14 mips-tdep.c
*** mips-tdep.c	1999/12/22 21:45:05	1.1.1.14
--- mips-tdep.c	2000/02/18 22:29:59
***************
*** 3639,3645 ****
--- 3639,3663 ----
  }
  
  
+ /* If the current gcc for for this target does not produce correct debugging
+    information for float parameters, both prototyped and unprototyped, then
+    define this macro.  This forces gdb to  always assume that floats are
+    passed as doubles and then converted in the callee.
+ 
+    For the mips chip, it appears that the debug info marks the parameters as
+    floats regardless of whether the function is prototyped, but the actual
+    values are passed as doubles for the non-prototyped case and floats for
+    the prototyped case.  Thus we choose to make the non-prototyped case work
+    for C and break the prototyped case, since the non-prototyped case is
+    probably much more common.  (FIXME). */
  
+ static int
+ mips_coerce_float_to_double (struct type *formal, struct type *actual)
+ {
+   return current_language->la_language == language_c;
+ }
+ 
+ 
  static gdbarch_init_ftype mips_gdbarch_init;
  static struct gdbarch *
  mips_gdbarch_init (info, arches)
***************
*** 3835,3840 ****
--- 3853,3859 ----
    set_gdbarch_push_return_address (gdbarch, mips_push_return_address);
    set_gdbarch_push_arguments (gdbarch, mips_push_arguments);
    set_gdbarch_register_convertible (gdbarch, generic_register_convertible_not);
+   set_gdbarch_coerce_float_to_double (gdbarch, mips_coerce_float_to_double);
  
    set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
    set_gdbarch_get_saved_register (gdbarch, default_get_saved_register);
Index: doc/gdbint.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdbint.texinfo,v
retrieving revision 1.1.1.21
diff -c -r1.1.1.21 gdbint.texinfo
*** gdbint.texinfo	2000/02/01 03:19:13	1.1.1.21
--- gdbint.texinfo	2000/02/18 22:30:02
***************
*** 1307,1312 ****
--- 1307,1335 ----
  
  Currently only implemented correctly for native Sparc configurations?
  
+ @item COERCE_FLOAT_TO_DOUBLE (@var{formal}, @var{actual})
+ If we are calling a function by hand, and the function was declared
+ (according to the debug info) without a prototype, should we
+ automatically promote floats to doubles?  This macro must evaluate to
+ non-zero if we should, or zero if we should leave the value alone.
+ 
+ The argument @var{actual} is the type of the value we want to pass to
+ the function.  The argument @var{formal} is the type of this argument,
+ as it appears in the function's definition.  Note that @var{formal} may
+ be zero if we have no debugging information for the function, or if
+ we're passing more arguments than are officially declared (for example,
+ varargs).  This macro is never invoked if the function definitely has a
+ prototype.
+ 
+ The default behavior is to promote only when we have no type information
+ for the formal parameter.  This is different from the obvious behavior,
+ which would be to promote whenever we have no prototype, just as the
+ compiler does.  It's annoying, but some older targets rely on this.  If
+ you want GDB to follow the typical compiler behavior --- to always
+ promote when there is no prototype in scope --- your gdbarch init
+ function can call @code{set_gdbarch_coerce_float_to_double} and select
+ the @code{standard_coerce_float_to_double} function.
+ 
  @item CPLUS_MARKER
  Define this to expand into the character that G++ uses to distinguish
  compiler-generated identifiers from programmer-specified identifiers.
Index: config/alpha/tm-alpha.h
===================================================================
RCS file: /cvs/src/src/gdb/config/alpha/tm-alpha.h,v
retrieving revision 1.1.1.7
diff -c -r1.1.1.7 tm-alpha.h
*** tm-alpha.h	1999/09/08 23:59:48	1.1.1.7
--- tm-alpha.h	2000/02/18 22:30:02
***************
*** 445,451 ****
     values are always passed in as doubles.  Thus by setting this to 1, both
     types of calls will work. */
  
! #define COERCE_FLOAT_TO_DOUBLE 1
  
  /* Return TRUE if procedure descriptor PROC is a procedure descriptor
     that refers to a dynamically generated sigtramp function.
--- 445,451 ----
     values are always passed in as doubles.  Thus by setting this to 1, both
     types of calls will work. */
  
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
  
  /* Return TRUE if procedure descriptor PROC is a procedure descriptor
     that refers to a dynamically generated sigtramp function.
Index: config/fr30/tm-fr30.h
===================================================================
RCS file: /cvs/src/src/gdb/config/fr30/tm-fr30.h,v
retrieving revision 1.1.1.7
diff -c -r1.1.1.7 tm-fr30.h
*** tm-fr30.h	1999/12/14 01:05:40	1.1.1.7
--- tm-fr30.h	2000/02/18 22:30:02
***************
*** 234,237 ****
     should be true on any system where you can rely on the prototyping
     information.  When this is true, value_arg_coerce will promote
     floats to doubles iff the function is not prototyped.  */
! #define COERCE_FLOAT_TO_DOUBLE 1
--- 234,237 ----
     should be true on any system where you can rely on the prototyping
     information.  When this is true, value_arg_coerce will promote
     floats to doubles iff the function is not prototyped.  */
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
Index: config/m32r/tm-m32r.h
===================================================================
RCS file: /cvs/src/src/gdb/config/m32r/tm-m32r.h,v
retrieving revision 1.1.1.8
diff -c -r1.1.1.8 tm-m32r.h
*** tm-m32r.h	1999/12/14 01:05:41	1.1.1.8
--- tm-m32r.h	2000/02/18 22:30:03
***************
*** 166,172 ****
  /* mvs_no_check  FRAME_NUM_ARGS */
  #define FRAME_NUM_ARGS(fi) (-1)
  
! #define COERCE_FLOAT_TO_DOUBLE 1
  
  extern void m32r_write_sp (CORE_ADDR val);
  #define TARGET_WRITE_SP m32r_write_sp
--- 166,172 ----
  /* mvs_no_check  FRAME_NUM_ARGS */
  #define FRAME_NUM_ARGS(fi) (-1)
  
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
  
  extern void m32r_write_sp (CORE_ADDR val);
  #define TARGET_WRITE_SP m32r_write_sp
Index: config/mips/tm-mips.h
===================================================================
RCS file: /cvs/src/src/gdb/config/mips/tm-mips.h,v
retrieving revision 1.1.1.11
diff -c -r1.1.1.11 tm-mips.h
*** tm-mips.h	1999/12/22 21:45:14	1.1.1.11
--- tm-mips.h	2000/02/18 22:30:03
***************
*** 500,505 ****
--- 500,506 ----
  
  #define ECOFF_REG_TO_REGNUM(num) ((num) < 32 ? (num) : (num)+FP0_REGNUM-32)
  
+ #if !GDB_MULTI_ARCH
  /* If the current gcc for for this target does not produce correct debugging
     information for float parameters, both prototyped and unprototyped, then
     define this macro.  This forces gdb to  always assume that floats are
***************
*** 512,518 ****
     for C and break the prototyped case, since the non-prototyped case is
     probably much more common.  (FIXME). */
  
! #define COERCE_FLOAT_TO_DOUBLE (current_language -> la_language == language_c)
  
  /* Select the default mips disassembler */
  
--- 513,520 ----
     for C and break the prototyped case, since the non-prototyped case is
     probably much more common.  (FIXME). */
  
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (current_language -> la_language == language_c)
! #endif
  
  /* Select the default mips disassembler */
  
Index: config/pa/tm-hppa.h
===================================================================
RCS file: /cvs/src/src/gdb/config/pa/tm-hppa.h,v
retrieving revision 1.1.1.12
diff -c -r1.1.1.12 tm-hppa.h
*** tm-hppa.h	2000/02/02 00:21:14	1.1.1.12
--- tm-hppa.h	2000/02/18 22:30:04
***************
*** 793,799 ****
     for C and break the prototyped case, since the non-prototyped case is
     probably much more common.  (FIXME). */
  
! #define COERCE_FLOAT_TO_DOUBLE (current_language -> la_language == language_c)
  
  /* Here's how to step off a permanent breakpoint.  */
  #define SKIP_PERMANENT_BREAKPOINT (hppa_skip_permanent_breakpoint)
--- 793,799 ----
     for C and break the prototyped case, since the non-prototyped case is
     probably much more common.  (FIXME). */
  
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (current_language -> la_language == language_c)
  
  /* Here's how to step off a permanent breakpoint.  */
  #define SKIP_PERMANENT_BREAKPOINT (hppa_skip_permanent_breakpoint)
Index: config/rs6000/tm-rs6000.h
===================================================================
RCS file: /cvs/src/src/gdb/config/rs6000/tm-rs6000.h,v
retrieving revision 1.1.1.5
diff -c -r1.1.1.5 tm-rs6000.h
*** tm-rs6000.h	1999/08/31 01:07:59	1.1.1.5
--- tm-rs6000.h	2000/02/18 22:30:04
***************
*** 560,563 ****
     values are always passed in as doubles.  Thus by setting this to 1, both
     types of calls will work. */
  
! #define COERCE_FLOAT_TO_DOUBLE 1
--- 560,563 ----
     values are always passed in as doubles.  Thus by setting this to 1, both
     types of calls will work. */
  
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
Index: config/sh/tm-sh.h
===================================================================
RCS file: /cvs/src/src/gdb/config/sh/tm-sh.h,v
retrieving revision 1.1.1.8
diff -c -r1.1.1.8 tm-sh.h
*** tm-sh.h	1999/12/14 01:05:42	1.1.1.8
--- tm-sh.h	2000/02/18 22:30:04
***************
*** 269,275 ****
  
  #define REGISTER_SIZE 4
  
! #define COERCE_FLOAT_TO_DOUBLE 1
  
  #define BELIEVE_PCC_PROMOTION 1
  
--- 269,275 ----
  
  #define REGISTER_SIZE 4
  
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
  
  #define BELIEVE_PCC_PROMOTION 1
  
Index: config/sparc/tm-sparc.h
===================================================================
RCS file: /cvs/src/src/gdb/config/sparc/tm-sparc.h,v
retrieving revision 1.1.1.7
diff -c -r1.1.1.7 tm-sparc.h
*** tm-sparc.h	1999/09/09 00:00:06	1.1.1.7
--- tm-sparc.h	2000/02/18 22:30:05
***************
*** 569,575 ****
     define this macro.  This forces gdb to  always assume that floats are
     passed as doubles and then converted in the callee. */
  
! #define COERCE_FLOAT_TO_DOUBLE 1
  
  /* Select the sparc disassembler */
  
--- 569,575 ----
     define this macro.  This forces gdb to  always assume that floats are
     passed as doubles and then converted in the callee. */
  
! #define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
  
  /* Select the sparc disassembler */
  

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]