This is the mail archive of the gdb-patches@sources.redhat.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]
Other format: [Raw text]

RFC: Slay COERCE_FLOAT_TO_DOUBLE


I'd like to see what people think of this patch.  If there's a general sense
of agreement, I'll apply it (probably in early January).  Eli, I'm not
entirely sure I put the documentation in the right place; thoughts?


COERCE_FLOAT_TO_DOUBLE is a bit of a wart.  It's a target macro, but it's
not a target-dependent behavior; it's actually sensitive to the debug info. 
So what I chose to do was to rip it out entirely.

The macro was originally used to decide what to do when passing a float
argument to a function that wasn't prototyped.  Nominally, of course, it
gets promoted to double.  That's how C works and most modern ABIs are
modeled after this.  What actually happens, however, is a little more
complex: we don't know if the function is prototyped or not!  Only DWARF and
DWARF-2 tell us.

Stabs compilers (I only checked GCC and Sun Workshop CC, but those are the
two major ones) emit the call-as type in the debug information.  I.E. an
unprototyped function taking a float argument will have a type signature
that says it takes a double.  So the easy thing to do for stabs is to set
TYPE_FLAG_PROTOTYPED always, with appropriate commentary.  I've done this. 
It caused a minor bit of testsuite churn, since some ()'s became (void)'s; I
think that's OK, we know they are really void functions anyway.

DWARF and DWARF-2 tell us accurately.

For hpread and mdebugread, the target macros were being used to enforce what
stabs used to do: mark all C++ functions as prototyped.  So I pushed that
change down into the debug reader.  These formats seem to produce the
declared-as type so there's really nothing better we can do.

Then, for good measure, I added a user-settable variable ("set
coerce-float-to-double") so that the user can override the normal behavior
for "unprototyped" functions.  You need this to call a prototyped C function
on HP/UX that wants a float.  It used to be impossible; definitely a step
up.

This kills two XPASSes in stabs and four FAILs in DWARF-2, if I remember
correctly, on i386-linux.  I don't have test harnesses set up on Solaris or
HP/UX at the moment but I verified that the debug info is as I expect. 
Overall, I'm pretty fond of it, and it brings me a little closer to my
testsuite goals while improving GDB instead of playing with the testsuite.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

2002-12-23  Daniel Jacobowitz  <drow@mvista.com>

	* buildsym.h (processing_hp_compilation): Remove obsolete variable.
	* gdbarch.sh Remove include of "value.h" in gdbarch.h.
	(COERCE_FLOAT_TO_DOUBLE): Remove.
	* gdbarch.c: Regenerate.
	* gdbarch.h: Regenerate.
	* Makefile.in: Remove value_h from gdbarch_h.
	* valops.c (coerce_float_to_double): New variable.
	(default_coerce_float_to_double): Remove.
	(standard_coerce_float_to_double): Remove.
	(value_arg_coerce): Use coerce_float_to_double.
	(_initialize_valops): Add "set coerce-float-to-double".
	* value.h (default_coerce_float_to_double): Remove prototype.
	(standard_coerce_float_to_double): Remove prototype.

	* hpread.c (hpread_process_one_debug_symbol): Mark C++ functions as
	prototyped.
	* mdebugread.c (parse_symbol): Likewise.
	* stabsread.c (define_symbol): Mark all functions as prototyped.

	* hppa-tdep.c (hppa_coerce_float_to_double): Remove.
	* alpha-tdep.c (alpha_gdbarch_init): Remove call to
	set_gdbarch_coerce_float_to_double.
	* arm-tdep.c (arm_gdbarch_init): Likewise.
	* frv-tdep.c (frv_gdbarch_init): Likewise.
	* h8300-tdep.c (h8300_gdbarch_init): Likewise (commented out).
	* i386-sol2-tdep.c (i386_sol2_init_abi): Likewise.
	* mips-tdep.c (mips_gdbarch_init): Likewise.
	(mips_coerce_float_to_double): Remove.
	* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
	(rs6000_coerce_float_to_double): Remove.
	* s390-tdep.c (s390_gdbarch_init): Likewise.
	* sh-tdep.c (sh_gdbarch_init): Likewise.
	(sh_coerce_float_to_double): Remove.
	* sparc-tdep.c (sparc_gdbarch_init): Likewise.
	(sparc_coerce_float_to_double): Remove.
	* v850-tdep.c (v850_gdbarch_init): Likewise.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
	* config/m32r/tm-m32r.h (COERCE_FLOAT_TO_DOUBLE): Remove.
	* config/pa/tm-hppa.h: (COERCE_FLOAT_TO_DOUBLE): Remove.
	(hppa_coerce_float_to_double): Remove prototype.
	* config/sparc/tm-sparc.h (COERCE_FLOAT_TO_DOUBLE): Remove.

2002-12-23  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.texinfo (Controlling GDB): Add ABI section.  Document
	"set coerce-float-to-double".
	* gdbint.texinfo (COERCE_FLOAT_TO_DOUBLE): Remove documentation.

2002-12-23  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/callfuncs.exp: Don't XFAIL unprototyped functions for
	stabs.
	* gdb.base/completion.exp: Allow marker1(void) as well as marker1().
	* gdb.base/whatis.exp: Always allow (void) after function names.

Index: alpha-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/alpha-tdep.c,v
retrieving revision 1.48
diff -u -p -r1.48 alpha-tdep.c
--- alpha-tdep.c	11 Dec 2002 02:26:34 -0000	1.48
+++ alpha-tdep.c	23 Dec 2002 17:53:58 -0000
@@ -1901,10 +1901,6 @@ alpha_gdbarch_init (struct gdbarch_info 
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
 
-  /* Floats are always passed as doubles.  */
-  set_gdbarch_coerce_float_to_double (gdbarch,
-                                      standard_coerce_float_to_double);
-
   set_gdbarch_breakpoint_from_pc (gdbarch, alpha_breakpoint_from_pc);
   set_gdbarch_decr_pc_after_break (gdbarch, 4);
 
Index: arm-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/arm-tdep.c,v
retrieving revision 1.84
diff -u -p -r1.84 arm-tdep.c
--- arm-tdep.c	21 Dec 2002 19:58:07 -0000	1.84
+++ arm-tdep.c	23 Dec 2002 17:53:59 -0000
@@ -2914,8 +2914,6 @@ arm_gdbarch_init (struct gdbarch_info in
   set_gdbarch_push_return_address (gdbarch, arm_push_return_address);
 
   set_gdbarch_push_arguments (gdbarch, arm_push_arguments);
-  set_gdbarch_coerce_float_to_double (gdbarch,
-				      standard_coerce_float_to_double);
 
   /* Frame handling.  */
   set_gdbarch_frame_chain_valid (gdbarch, arm_frame_chain_valid);
Index: buildsym.h
===================================================================
RCS file: /cvs/src/src/gdb/buildsym.h,v
retrieving revision 1.7
diff -u -p -r1.7 buildsym.h
--- buildsym.h	18 Nov 2002 19:14:10 -0000	1.7
+++ buildsym.h	23 Dec 2002 17:53:59 -0000
@@ -83,16 +83,6 @@ EXTERN unsigned char processing_gcc_comp
 
 EXTERN unsigned char processing_acc_compilation;
 
-/* elz: added this flag to know when a block is compiled with HP
-   compilers (cc, aCC). This is necessary because of the macro
-   COERCE_FLOAT_TO_DOUBLE defined in tm_hppa.h, which causes a
-   coercion of float to double to always occur in parameter passing
-   for a function called by gdb (see the function value_arg_coerce in
-   valops.c). This is necessary only if the target was compiled with
-   gcc, not with HP compilers or with g++ */
-
-EXTERN unsigned char processing_hp_compilation;
-
 /* Count symbols as they are processed, for error messages.  */
 
 EXTERN unsigned int symnum;
Index: frv-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/frv-tdep.c,v
retrieving revision 1.11
diff -u -p -r1.11 frv-tdep.c
--- frv-tdep.c	11 Dec 2002 02:26:35 -0000	1.11
+++ frv-tdep.c	23 Dec 2002 17:53:59 -0000
@@ -1097,8 +1097,6 @@ frv_gdbarch_init (struct gdbarch_info in
 
   /* Settings for calling functions in the inferior.  */
   set_gdbarch_call_dummy_length (gdbarch, 0);
-  set_gdbarch_coerce_float_to_double (gdbarch, 
-				      standard_coerce_float_to_double);
   set_gdbarch_push_arguments (gdbarch, frv_push_arguments);
   set_gdbarch_push_return_address (gdbarch, frv_push_return_address);
   set_gdbarch_pop_frame (gdbarch, frv_pop_frame);
Index: gdbarch.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.c,v
retrieving revision 1.173
diff -u -p -r1.173 gdbarch.c
--- gdbarch.c	11 Dec 2002 20:19:39 -0000	1.173
+++ gdbarch.c	23 Dec 2002 17:54:00 -0000
@@ -199,7 +199,6 @@ struct gdbarch
   gdbarch_deprecated_init_frame_pc_ftype *deprecated_init_frame_pc;
   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;
@@ -427,7 +426,6 @@ struct gdbarch startup_gdbarch =
   0,
   0,
   0,
-  0,
   generic_in_function_epilogue_p,
   construct_inferior_arguments,
   0,
@@ -533,7 +531,6 @@ gdbarch_alloc (const struct gdbarch_info
   current_gdbarch->call_dummy_words = legacy_call_dummy_words;
   current_gdbarch->sizeof_call_dummy_words = legacy_sizeof_call_dummy_words;
   current_gdbarch->call_dummy_stack_adjust_p = -1;
-  current_gdbarch->coerce_float_to_double = default_coerce_float_to_double;
   current_gdbarch->register_convertible = generic_register_convertible_not;
   current_gdbarch->convert_register_p = legacy_convert_register_p;
   current_gdbarch->register_to_value = legacy_register_to_value;
@@ -712,7 +709,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
     fprintf_unfiltered (log, "\n\tfix_call_dummy");
   /* Skip verify of deprecated_init_frame_pc_first, has predicate */
   /* Skip verify of deprecated_init_frame_pc, has predicate */
-  /* Skip verify of coerce_float_to_double, invalid_p == 0 */
   /* Skip verify of get_saved_register, has predicate */
   /* Skip verify of register_convertible, invalid_p == 0 */
   /* Skip verify of register_convert_to_virtual, invalid_p == 0 */
@@ -1075,17 +1071,6 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                         (long) current_gdbarch->cannot_store_register
                         /*CANNOT_STORE_REGISTER ()*/);
 #endif
-#ifdef COERCE_FLOAT_TO_DOUBLE
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "COERCE_FLOAT_TO_DOUBLE(formal, actual)",
-                      XSTRING (COERCE_FLOAT_TO_DOUBLE (formal, actual)));
-  if (GDB_MULTI_ARCH)
-    fprintf_unfiltered (file,
-                        "gdbarch_dump: COERCE_FLOAT_TO_DOUBLE = <0x%08lx>\n",
-                        (long) current_gdbarch->coerce_float_to_double
-                        /*COERCE_FLOAT_TO_DOUBLE ()*/);
-#endif
 #ifdef COFF_MAKE_MSYMBOL_SPECIAL
 #if GDB_MULTI_ARCH
   /* Macro might contain `[{}]' when not multi-arch */
@@ -3868,25 +3853,6 @@ set_gdbarch_believe_pcc_promotion_type (
                                         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)
-{
-  gdb_assert (gdbarch != NULL);
-  if (gdbarch->coerce_float_to_double == 0)
-    internal_error (__FILE__, __LINE__,
-                    "gdbarch: gdbarch_coerce_float_to_double invalid");
-  if (gdbarch_debug >= 2)
-    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;
 }
 
 int
Index: gdbarch.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.h,v
retrieving revision 1.134
diff -u -p -r1.134 gdbarch.h
--- gdbarch.h	11 Dec 2002 20:19:39 -0000	1.134
+++ gdbarch.h	23 Dec 2002 17:54:00 -0000
@@ -38,7 +38,6 @@
 #include "dis-asm.h" /* Get defs for disassemble_info, which unfortunately is a typedef. */
 #if !GDB_MULTI_ARCH
 /* Pull in function declarations refered to, indirectly, via macros.  */
-#include "value.h" /* For default_coerce_float_to_double which is referenced by a macro.  */
 #include "inferior.h"		/* For unsigned_address_to_pointer().  */
 #endif
 
@@ -1271,23 +1270,6 @@ extern void set_gdbarch_believe_pcc_prom
 #if GDB_MULTI_ARCH
 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (BELIEVE_PCC_PROMOTION_TYPE)
 #define BELIEVE_PCC_PROMOTION_TYPE (gdbarch_believe_pcc_promotion_type (current_gdbarch))
-#endif
-#endif
-
-/* Default (function) for non- multi-arch platforms. */
-#if (!GDB_MULTI_ARCH) && !defined (COERCE_FLOAT_TO_DOUBLE)
-#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (default_coerce_float_to_double (formal, actual))
-#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 > GDB_MULTI_ARCH_PARTIAL) && defined (COERCE_FLOAT_TO_DOUBLE)
-#error "Non multi-arch definition of COERCE_FLOAT_TO_DOUBLE"
-#endif
-#if GDB_MULTI_ARCH
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (COERCE_FLOAT_TO_DOUBLE)
-#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (gdbarch_coerce_float_to_double (current_gdbarch, formal, actual))
 #endif
 #endif
 
Index: gdbarch.sh
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.sh,v
retrieving revision 1.185
diff -u -p -r1.185 gdbarch.sh
--- gdbarch.sh	11 Dec 2002 20:19:39 -0000	1.185
+++ gdbarch.sh	23 Dec 2002 17:54:01 -0000
@@ -518,7 +518,6 @@ F::DEPRECATED_INIT_FRAME_PC:CORE_ADDR:de
 #
 v:2:BELIEVE_PCC_PROMOTION:int:believe_pcc_promotion:::::::
 v:2:BELIEVE_PCC_PROMOTION_TYPE:int:believe_pcc_promotion_type:::::::
-f:2:COERCE_FLOAT_TO_DOUBLE:int:coerce_float_to_double:struct type *formal, struct type *actual:formal, actual:::default_coerce_float_to_double::0
 F:2: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
 #
 f:2:REGISTER_CONVERTIBLE:int:register_convertible:int nr:nr:::generic_register_convertible_not::0
@@ -779,7 +778,6 @@ cat <<EOF
 #include "dis-asm.h" /* Get defs for disassemble_info, which unfortunately is a typedef. */
 #if !GDB_MULTI_ARCH
 /* Pull in function declarations refered to, indirectly, via macros.  */
-#include "value.h" /* For default_coerce_float_to_double which is referenced by a macro.  */
 #include "inferior.h"		/* For unsigned_address_to_pointer().  */
 #endif
 
Index: h8300-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/h8300-tdep.c,v
retrieving revision 1.28
diff -u -p -r1.28 h8300-tdep.c
--- h8300-tdep.c	11 Dec 2002 02:26:35 -0000	1.28
+++ h8300-tdep.c	23 Dec 2002 17:54:01 -0000
@@ -1135,9 +1135,6 @@ h8300_gdbarch_init (struct gdbarch_info 
   set_gdbarch_frameless_function_invocation (gdbarch,
 					     frameless_look_for_prologue);
 
-  /* W/o prototype, coerce float args to double. */
-  /* set_gdbarch_coerce_float_to_double (gdbarch, standard_coerce_float_to_double); */
-
   /*
    * Call Dummies
    * 
Index: hppa-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/hppa-tdep.c,v
retrieving revision 1.41
diff -u -p -r1.41 hppa-tdep.c
--- hppa-tdep.c	16 Dec 2002 16:51:45 -0000	1.41
+++ hppa-tdep.c	23 Dec 2002 17:54:02 -0000
@@ -146,7 +146,6 @@ int hppa_cannot_store_register (int regn
 CORE_ADDR hppa_frame_args_address (struct frame_info *fi);
 CORE_ADDR hppa_frame_locals_address (struct frame_info *fi);
 CORE_ADDR hppa_smash_text_address (CORE_ADDR addr);
-int hppa_coerce_float_to_double (struct type *formal, struct type *actual);
 
 typedef struct
   {
@@ -4878,19 +4877,6 @@ hppa_smash_text_address (CORE_ADDR addr)
      for our purposes to just ignore those bits.  */
 
   return (addr &= ~0x3);
-}
-
-int
-hppa_coerce_float_to_double (struct type *formal, struct type *actual)
-{
-   /* FIXME: For the pa, 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.  */
-  return (current_language -> la_language == language_c);
 }
 
 static struct gdbarch *
Index: hpread.c
===================================================================
RCS file: /cvs/src/src/gdb/hpread.c,v
retrieving revision 1.27
diff -u -p -r1.27 hpread.c
--- hpread.c	17 Dec 2002 00:39:07 -0000	1.27
+++ hpread.c	23 Dec 2002 17:54:03 -0000
@@ -5242,6 +5242,11 @@ hpread_process_one_debug_symbol (union d
       SYMBOL_CLASS (sym) = LOC_BLOCK;
       SYMBOL_TYPE (sym) = hpread_read_function_type (hp_type, dn_bufp, objfile, 1);
 
+      /* All functions in C++ have prototypes.  For C we don't have enough
+         information in the debug info.  */
+      if (SYMBOL_LANGUAGE (s) == language_cplus)
+	TYPE_FLAGS (SYMBOL_TYPE (s)) |= TYPE_FLAG_PROTOTYPED;
+
       /* The "SYMBOL_NAME" field is expected to be the mangled name
        * (if any), which we get from the "alias" field of the SOM record
        * if that exists.
Index: i386-sol2-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-sol2-tdep.c,v
retrieving revision 1.8
diff -u -p -r1.8 i386-sol2-tdep.c
--- i386-sol2-tdep.c	21 Dec 2002 19:58:07 -0000	1.8
+++ i386-sol2-tdep.c	23 Dec 2002 17:54:03 -0000
@@ -47,10 +47,6 @@ i386_sol2_init_abi (struct gdbarch_info 
   tdep->sigcontext_addr = i386bsd_sigcontext_addr;
   tdep->sc_pc_offset = 36 + 14 * 4;
   tdep->sc_sp_offset = 36 + 17 * 4;
-
-  /* Assume that the prototype flag can be trusted.  */
-  set_gdbarch_coerce_float_to_double (gdbarch,
-				      standard_coerce_float_to_double);
 }
 
 
Index: mdebugread.c
===================================================================
RCS file: /cvs/src/src/gdb/mdebugread.c,v
retrieving revision 1.32
diff -u -p -r1.32 mdebugread.c
--- mdebugread.c	17 Dec 2002 00:39:07 -0000	1.32
+++ mdebugread.c	23 Dec 2002 17:54:04 -0000
@@ -795,6 +795,11 @@ parse_symbol (SYMR *sh, union aux_ext *a
       /* Make a type for the procedure itself */
       SYMBOL_TYPE (s) = lookup_function_type (t);
 
+      /* All functions in C++ have prototypes.  For C we don't have enough
+         information in the debug info.  */
+      if (SYMBOL_LANGUAGE (s) == language_cplus)
+	TYPE_FLAGS (SYMBOL_TYPE (s)) |= TYPE_FLAG_PROTOTYPED;
+
       /* Create and enter a new lexical context */
       b = new_block (top_stack->maxsyms);
       SYMBOL_BLOCK_VALUE (s) = b;
Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.148
diff -u -p -r1.148 mips-tdep.c
--- mips-tdep.c	21 Dec 2002 06:36:02 -0000	1.148
+++ mips-tdep.c	23 Dec 2002 17:54:06 -0000
@@ -5453,24 +5453,6 @@ mips_call_dummy_address (void)
 }
 
 
-/* If the current gcc 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;
-}
-
 /* When debugging a 64 MIPS target running a 32 bit ABI, the size of
    the register stored on the stack (32) is different to its real raw
    size (64).  The below ensures that registers are fetched from the
@@ -6012,8 +5994,6 @@ mips_gdbarch_init (struct gdbarch_info i
 					   mips_register_convert_to_virtual);
   set_gdbarch_register_convert_to_raw (gdbarch, 
 				       mips_register_convert_to_raw);
-
-  set_gdbarch_coerce_float_to_double (gdbarch, mips_coerce_float_to_double);
 
   set_gdbarch_frame_chain (gdbarch, mips_frame_chain);
   set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
Index: rs6000-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v
retrieving revision 1.100
diff -u -p -r1.100 rs6000-tdep.c
--- rs6000-tdep.c	18 Dec 2002 15:23:22 -0000	1.100
+++ rs6000-tdep.c	23 Dec 2002 17:54:06 -0000
@@ -1855,17 +1855,6 @@ rs6000_register_virtual_type (int n)
     }
 }
 
-/* For the PowerPC, it appears that the debug info marks float parameters as
-   floats regardless of whether the function is prototyped, but the actual
-   values are always passed in as doubles.  Tell gdb to always assume that
-   floats are passed as doubles and then converted in the callee.  */
-
-static int
-rs6000_coerce_float_to_double (struct type *formal, struct type *actual)
-{
-  return 1;
-}
-
 /* Return whether register N requires conversion when moving from raw format
    to virtual format.
 
@@ -2906,7 +2895,6 @@ rs6000_gdbarch_init (struct gdbarch_info
   set_gdbarch_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
   set_gdbarch_push_return_address (gdbarch, ppc_push_return_address);
   set_gdbarch_believe_pcc_promotion (gdbarch, 1);
-  set_gdbarch_coerce_float_to_double (gdbarch, rs6000_coerce_float_to_double);
 
   set_gdbarch_register_convertible (gdbarch, rs6000_register_convertible);
   set_gdbarch_register_convert_to_virtual (gdbarch, rs6000_register_convert_to_virtual);
Index: s390-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/s390-tdep.c,v
retrieving revision 1.62
diff -u -p -r1.62 s390-tdep.c
--- s390-tdep.c	11 Dec 2002 02:26:36 -0000	1.62
+++ s390-tdep.c	23 Dec 2002 17:54:07 -0000
@@ -1840,8 +1840,6 @@ s390_gdbarch_init (struct gdbarch_info i
   set_gdbarch_sizeof_call_dummy_words (gdbarch,
                                        sizeof (s390_call_dummy_words));
   set_gdbarch_call_dummy_words (gdbarch, s390_call_dummy_words);
-  set_gdbarch_coerce_float_to_double (gdbarch,
-                                      standard_coerce_float_to_double);
 
   switch (info.bfd_arch_info->mach)
     {
Index: sh-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sh-tdep.c,v
retrieving revision 1.82
diff -u -p -r1.82 sh-tdep.c
--- sh-tdep.c	11 Dec 2002 02:26:36 -0000	1.82
+++ sh-tdep.c	23 Dec 2002 17:54:07 -0000
@@ -2319,12 +2319,6 @@ sh_fix_call_dummy (char *dummy, CORE_ADD
 }
 #endif
 
-static int
-sh_coerce_float_to_double (struct type *formal, struct type *actual)
-{
-  return 1;
-}
-
 /* Find a function's return value in the appropriate registers (in
    regbuf), and copy it into valbuf.  Extract from an array REGBUF
    containing the (raw) register state a function return value of type
@@ -4575,8 +4569,6 @@ sh_gdbarch_init (struct gdbarch_info inf
   set_gdbarch_call_dummy_p (gdbarch, 1);
   set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0);
   set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy);
-  set_gdbarch_coerce_float_to_double (gdbarch, 
-				      sh_coerce_float_to_double);
 
   set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame);
   set_gdbarch_push_return_address (gdbarch, sh_push_return_address);
Index: sparc-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc-tdep.c,v
retrieving revision 1.53
diff -u -p -r1.53 sparc-tdep.c
--- sparc-tdep.c	11 Dec 2002 20:35:43 -0000	1.53
+++ sparc-tdep.c	23 Dec 2002 17:54:08 -0000
@@ -3007,14 +3007,6 @@ sparc_gdbarch_fix_call_dummy (char *dumm
     sparc_fix_call_dummy (dummy, pc, fun, type, gcc_p);
 }
 
-/* Coerce float to double: a no-op.  */
-
-static int
-sparc_coerce_float_to_double (struct type *formal, struct type *actual)
-{
-  return 1;
-}
-
 /* CALL_DUMMY_ADDRESS: fetch the breakpoint address for a call dummy.  */
 
 static CORE_ADDR
@@ -3138,8 +3130,6 @@ sparc_gdbarch_init (struct gdbarch_info 
   /* First set settings that are common for all sparc architectures.  */
   set_gdbarch_believe_pcc_promotion (gdbarch, 1);
   set_gdbarch_breakpoint_from_pc (gdbarch, memory_breakpoint_from_pc);
-  set_gdbarch_coerce_float_to_double (gdbarch, 
-				      sparc_coerce_float_to_double);
   set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
   set_gdbarch_call_dummy_p (gdbarch, 1);
   set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 1);
Index: stabsread.c
===================================================================
RCS file: /cvs/src/src/gdb/stabsread.c,v
retrieving revision 1.46
diff -u -p -r1.46 stabsread.c
--- stabsread.c	17 Dec 2002 00:39:08 -0000	1.46
+++ stabsread.c	23 Dec 2002 17:54:09 -0000
@@ -1569,9 +1569,13 @@ define_symbol (CORE_ADDR valu, char *str
       if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
 	SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
 
-      /* All functions in C++ have prototypes.  */
-      if (SYMBOL_LANGUAGE (sym) == language_cplus)
-	TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
+      /* All functions in C++ have prototypes.  Stabs does not offer an
+         explicit way to identify prototyped or unprototyped functions,
+         but both GCC and Sun CC emit stabs for the "call-as" type rather
+         than the "declared-as" type for unprototyped functions, so
+         we treat all functions as if they were prototyped.  This is used
+         primarily for promotion when calling the function from GDB.  */
+      TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
 
       /* fall into process_prototype_types */
 
Index: v850-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/v850-tdep.c,v
retrieving revision 1.30
diff -u -p -r1.30 v850-tdep.c
--- v850-tdep.c	11 Dec 2002 02:26:36 -0000	1.30
+++ v850-tdep.c	23 Dec 2002 17:54:09 -0000
@@ -1256,8 +1256,6 @@ v850_gdbarch_init (struct gdbarch_info i
   set_gdbarch_frame_args_skip (gdbarch, 0);
   /* OK to default this value to 'unknown'. */
   set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
-  /* W/o prototype, coerce float args to double. */
-  set_gdbarch_coerce_float_to_double (gdbarch, standard_coerce_float_to_double);
 
   /*
    * Call Dummies
Index: valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.84
diff -u -p -r1.84 valops.c
--- valops.c	4 Dec 2002 00:05:53 -0000	1.84
+++ valops.c	23 Dec 2002 17:54:10 -0000
@@ -89,8 +89,30 @@ int overload_resolution = 0;
    The default is to stop in the frame where the signal was received. */
 
 int unwind_on_signal_p = 0;
-
 
+/* How you should pass arguments to a function depends on whether it
+   was defined in K&R style or prototype style.  If you define a
+   function using the K&R syntax that takes a `float' argument, then
+   callers must pass that argument as a `double'.  If you define the
+   function using the prototype syntax, then you must pass the
+   argument as a `float', with no promotion.
+
+   Unfortunately, on certain older platforms, the debug info doesn't
+   indicate reliably how each function was defined.  A function type's
+   TYPE_FLAG_PROTOTYPED flag may be clear, even if the function was
+   defined in prototype style.  When calling a function whose
+   TYPE_FLAG_PROTOTYPED flag is clear, GDB consults this flag to decide
+   what to do.
+
+   For modern targets, it is proper to assume that, if the prototype
+   flag is clear, that can be trusted: `float' arguments should be
+   promoted to `double'.  For some older targets, if the prototype
+   flag is clear, that doesn't tell us anything.  The default is to
+   trust the debug information; the user can override this behavior
+   with "set coerce-float-to-double 0".  */
+
+static int coerce_float_to_double;
+
 
 /* Find the address of function name NAME in the inferior.  */
 
@@ -1097,49 +1119,6 @@ default_push_arguments (int nargs, struc
   return sp;
 }
 
-
-/* Functions to use for the COERCE_FLOAT_TO_DOUBLE gdbarch method.
-
-   How you should pass arguments to a function depends on whether it
-   was defined in K&R style or prototype style.  If you define a
-   function using the K&R syntax that takes a `float' argument, then
-   callers must pass that argument as a `double'.  If you define the
-   function using the prototype syntax, then you must pass the
-   argument as a `float', with no promotion.
-
-   Unfortunately, on certain older platforms, the debug info doesn't
-   indicate reliably how each function was defined.  A function type's
-   TYPE_FLAG_PROTOTYPED flag may be clear, even if the function was
-   defined in prototype style.  When calling a function whose
-   TYPE_FLAG_PROTOTYPED flag is clear, GDB consults the
-   COERCE_FLOAT_TO_DOUBLE gdbarch method to decide what to do.
-
-   For modern targets, it is proper to assume that, if the prototype
-   flag is clear, that can be trusted: `float' arguments should be
-   promoted to `double'.  You should register the function
-   `standard_coerce_float_to_double' to get this behavior.
-
-   For some older targets, if the prototype flag is clear, that
-   doesn't tell us anything.  So we guess that, if we don't have a
-   type for the formal parameter (i.e., the first argument to
-   COERCE_FLOAT_TO_DOUBLE is null), then we should promote it;
-   otherwise, we should leave it alone.  The function
-   `default_coerce_float_to_double' provides this behavior; it is the
-   default value, for compatibility with older configurations.  */
-int
-default_coerce_float_to_double (struct type *formal, struct type *actual)
-{
-  return formal == NULL;
-}
-
-
-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.
 
@@ -1182,11 +1161,7 @@ value_arg_coerce (struct value *arg, str
 	type = builtin_type_int;
       break;
     case TYPE_CODE_FLT:
-      /* FIXME: We should always convert floats to doubles in the
-         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 (!is_prototyped && coerce_float_to_double)
 	{
 	  if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
 	    type = builtin_type_double;
@@ -3554,4 +3529,19 @@ is received while in a function called f
 unwinds the stack and restore the context to what as it was before the call.\n\
 The default is to stop in the frame where the signal was received.", &setlist),
 		     &showlist);
+
+  add_show_from_set
+    (add_set_cmd ("coerce-float-to-double", class_obscure, var_boolean,
+		  (char *) &coerce_float_to_double,
+		  "Set coercion of floats to doubles when calling functions\n"
+ "Variables of type float should generally be converted to doubles before\n"
+ "calling an unprototyped function, and left alone when calling a prototyped\n"
+ "function.  However, some older debug info formats do not provide enough\n"
+ "information to determine that a function is prototyped.  If this flag is\n"
+ "set, GDB will perform the conversion for a function it considers\n"
+ "unprototyped.\n"
+ "The default is to perform the conversion.\n",
+		  &setlist),
+     &showlist);
+  coerce_float_to_double = 1;
 }
Index: value.h
===================================================================
RCS file: /cvs/src/src/gdb/value.h,v
retrieving revision 1.37
diff -u -p -r1.37 value.h
--- value.h	14 Oct 2002 02:02:42 -0000	1.37
+++ value.h	23 Dec 2002 17:54:10 -0000
@@ -548,10 +548,6 @@ extern struct value *value_slice (struct
 extern struct value *call_function_by_hand (struct value *, int,
 					    struct value **);
 
-extern int default_coerce_float_to_double (struct type *, struct type *);
-
-extern int standard_coerce_float_to_double (struct type *, struct type *);
-
 extern struct value *value_literal_complex (struct value *, struct value *,
 					    struct type *);
 
Index: xstormy16-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v
retrieving revision 1.14
diff -u -p -r1.14 xstormy16-tdep.c
--- xstormy16-tdep.c	11 Dec 2002 02:26:36 -0000	1.14
+++ xstormy16-tdep.c	23 Dec 2002 17:54:11 -0000
@@ -1078,10 +1078,6 @@ xstormy16_gdbarch_init (struct gdbarch_i
   /* OK to default this value to 'unknown'. */
   set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
 
-  /* W/o prototype, coerce float args to double. */
-  set_gdbarch_coerce_float_to_double (gdbarch,
-				      standard_coerce_float_to_double);
-
   /*
    * Call Dummies
    * 
Index: config/m32r/tm-m32r.h
===================================================================
RCS file: /cvs/src/src/gdb/config/m32r/tm-m32r.h,v
retrieving revision 1.13
diff -u -p -r1.13 tm-m32r.h
--- config/m32r/tm-m32r.h	11 Dec 2002 02:26:37 -0000	1.13
+++ config/m32r/tm-m32r.h	23 Dec 2002 17:54:11 -0000
@@ -164,8 +164,6 @@ extern CORE_ADDR m32r_skip_prologue (COR
 /* 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/pa/tm-hppa.h
===================================================================
RCS file: /cvs/src/src/gdb/config/pa/tm-hppa.h,v
retrieving revision 1.26
diff -u -p -r1.26 tm-hppa.h
--- config/pa/tm-hppa.h	11 Dec 2002 02:26:37 -0000	1.26
+++ config/pa/tm-hppa.h	23 Dec 2002 17:54:11 -0000
@@ -688,16 +688,6 @@ extern CORE_ADDR target_read_fp (int);
 
 extern int hpread_adjust_stack_address (CORE_ADDR);
 
-/* 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.  */
-
-extern int hppa_coerce_float_to_double (struct type *formal,
-                                        struct type *actual);
-#define COERCE_FLOAT_TO_DOUBLE(formal, actual) \
-  hppa_coerce_float_to_double (formal, actual)
-
 /* Here's how to step off a permanent breakpoint.  */
 #define SKIP_PERMANENT_BREAKPOINT (hppa_skip_permanent_breakpoint)
 extern void hppa_skip_permanent_breakpoint (void);
Index: config/sparc/tm-sparc.h
===================================================================
RCS file: /cvs/src/src/gdb/config/sparc/tm-sparc.h,v
retrieving revision 1.26
diff -u -p -r1.26 tm-sparc.h
--- config/sparc/tm-sparc.h	11 Dec 2002 02:26:38 -0000	1.26
+++ config/sparc/tm-sparc.h	23 Dec 2002 17:54:11 -0000
@@ -280,14 +280,6 @@ extern void sparc_store_return_value (st
 
 extern CORE_ADDR sparc_extract_struct_value_address (char *);
 
-/* 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. */
-
-#define COERCE_FLOAT_TO_DOUBLE(FORMAL, ACTUAL) (1)
-
 /* Stack must be aligned on 64-bit boundaries when synthesizing
    function calls (128-bit for sparc64).  */
 
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.131
diff -u -p -r1.131 gdb.texinfo
--- doc/gdb.texinfo	11 Oct 2002 16:13:15 -0000	1.131
+++ doc/gdb.texinfo	23 Dec 2002 17:54:15 -0000
@@ -12778,6 +12778,7 @@ described here.
 * History::                     Command history
 * Screen Size::                 Screen size
 * Numbers::                     Numbers
+* ABI::                         Configuring the current ABI
 * Messages/Warnings::           Optional warnings and messages
 * Debugging Output::            Optional messages about internal happenings
 @end menu
@@ -13022,6 +13023,39 @@ Display the current default base for num
 @kindex show output-radix
 @item show output-radix
 Display the current default base for numeric display.
+@end table
+
+@node ABI
+@section Configuring the current ABI
+
+@value{GDBN} can determine the ABI (Application Binary Interface) of your
+application automatically.  However, sometimes you need to override its
+conclusions.  Use these commands to manage @value{GDBN}'s view of the
+current ABI.
+
+@cindex float promotion
+@kindex set coerce-float-to-double
+
+Generally, the way that an argument of type @code{float} is passed to a
+function depends on whether the function is prototyped.  For a prototyped
+(i.e. ANSI/ISO style) function, @code{float} arguments are passed unchanged,
+according to the architecture's convention for @code{float}.  For unprototyped
+(i.e. K&R style) functions, @code{float} arguments are first promoted to type
+@code{double} and then passed.
+
+Unfortunately, some forms of debug information do not reliably indicate whether
+a function is prototyped.  If @value{GDBN} calls a function that is not marked
+as prototyped, it consults @kbd{set coerce-float-to-double}.
+
+@table @code
+@item set coerce-float-to-double
+@itemx set coerce-float-to-double on
+Arguments of type @code{float} will be promoted to @code{double} when passed
+to an unprototyped function.  This is the default setting.
+
+@item set coerce-float-to-double off
+Arguments of type @code{float} will be passed directly to unprototyped
+functions.
 @end table
 
 @node Messages/Warnings
Index: doc/gdbint.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdbint.texinfo,v
retrieving revision 1.110
diff -u -p -r1.110 gdbint.texinfo
--- doc/gdbint.texinfo	11 Dec 2002 02:26:38 -0000	1.110
+++ doc/gdbint.texinfo	23 Dec 2002 17:54:17 -0000
@@ -3142,50 +3142,6 @@ and to cancel any deferred stores.
 
 Currently only implemented correctly for native Sparc configurations?
 
-@item COERCE_FLOAT_TO_DOUBLE (@var{formal}, @var{actual})
-@findex COERCE_FLOAT_TO_DOUBLE
-@cindex promotion to @code{double}
-@cindex @code{float} arguments
-@cindex prototyped functions, passing arguments to
-@cindex passing arguments to prototyped functions
-Return non-zero if GDB should promote @code{float} values to
-@code{double} when calling a non-prototyped function.  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.
-
-How you should pass arguments to a function depends on whether it was
-defined in K&R style or prototype style.  If you define a function using
-the K&R syntax that takes a @code{float} argument, then callers must
-pass that argument as a @code{double}.  If you define the function using
-the prototype syntax, then you must pass the argument as a @code{float},
-with no promotion.
-
-Unfortunately, on certain older platforms, the debug info doesn't
-indicate reliably how each function was defined.  A function type's
-@code{TYPE_FLAG_PROTOTYPED} flag may be unset, even if the function was
-defined in prototype style.  When calling a function whose
-@code{TYPE_FLAG_PROTOTYPED} flag is unset, GDB consults the
-@code{COERCE_FLOAT_TO_DOUBLE} macro to decide what to do.
-
-@findex standard_coerce_float_to_double
-For modern targets, it is proper to assume that, if the prototype flag
-is unset, that can be trusted: @code{float} arguments should be promoted
-to @code{double}.  You should use the function
-@code{standard_coerce_float_to_double} to get this behavior.
-
-@findex default_coerce_float_to_double
-For some older targets, if the prototype flag is unset, that doesn't
-tell us anything.  So we guess that, if we don't have a type for the
-formal parameter (@i{i.e.}, the first argument to
-@code{COERCE_FLOAT_TO_DOUBLE} is null), then we should promote it;
-otherwise, we should leave it alone.  The function
-@code{default_coerce_float_to_double} provides this behavior; it is the
-default value, for compatibility with older configurations.
-
 @item int CONVERT_REGISTER_P(@var{regnum})
 @findex CONVERT_REGISTER_P
 Return non-zero if register @var{regnum} can represent data values in a
Index: testsuite/gdb.base/callfuncs.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/callfuncs.exp,v
retrieving revision 1.9
diff -u -p -r1.9 callfuncs.exp
--- testsuite/gdb.base/callfuncs.exp	6 Jan 2002 14:42:39 -0000	1.9
+++ testsuite/gdb.base/callfuncs.exp	23 Dec 2002 17:54:18 -0000
@@ -143,9 +143,6 @@ proc do_function_calls {} {
 	gdb_test "p t_float_values(float_val1,-2.3765)" " = 1"
 
 	# Test passing of arguments which might not be widened.
-        # Under stabs, GCC doesn't tell us whether the function was
-        # prototyped or not.
-        if {$gcc_compiled} { setup_xfail_format "stabs" }
 	gdb_test "p t_float_values2(0.0,0.0)" " = 0"
 
 	# Although PR 5318 mentions SunOS specifically, this seems
@@ -157,9 +154,6 @@ proc do_function_calls {} {
 	    }
 	}
         
-        # Under stabs, GCC doesn't tell us whether the function was
-        # prototyped or not.
-        if {$gcc_compiled} { setup_xfail_format "stabs" }
 	gdb_test "p t_float_values2(3.14159,float_val2)" " = 1"
 
 	gdb_test "p t_small_values(1,2,3,4,5,6,7,8,9,10)" " = 55"
Index: testsuite/gdb.base/completion.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/completion.exp,v
retrieving revision 1.13
diff -u -p -r1.13 completion.exp
--- testsuite/gdb.base/completion.exp	17 May 2002 22:03:34 -0000	1.13
+++ testsuite/gdb.base/completion.exp	23 Dec 2002 17:54:18 -0000
@@ -705,7 +705,7 @@ gdb_expect  {
                       -re "marker1.*$gdb_prompt info func marker$"\
                       { send_gdb "\n"
                         gdb_expect {
-                                -re "All functions matching regular expression \"marker\":.*File.*break.c:\r\nint marker1\\(\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long int\\);.*$gdb_prompt $"\
+                                -re "All functions matching regular expression \"marker\":.*File.*break.c:\r\nint marker1\\((void|)\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long int\\);.*$gdb_prompt $"\
                                                   { pass "complete 'info func mar'"}
                                 -re ".*$gdb_prompt $" { fail "complete 'info func mar'"}
                                 timeout           {fail "(timeout) complete 'info func mar'"}
Index: testsuite/gdb.base/whatis.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/whatis.exp,v
retrieving revision 1.4
diff -u -p -r1.4 whatis.exp
--- testsuite/gdb.base/whatis.exp	4 May 2002 15:18:21 -0000	1.4
+++ testsuite/gdb.base/whatis.exp	23 Dec 2002 17:54:18 -0000
@@ -301,15 +301,13 @@ gdb_test "whatis v_union2" \
     "whatis unnamed union"
 
 
-if { [istarget "hppa*-hp-hpux*"] && $hp_aCC_compiler } {
-    # HP-UX: HP aCC compiler w/ +objdebug option detects language as
-    # c++, so we need the 'void' pattern here.
-    # Without +objdebug compilation option we still need to match ''.
-    # - guo
-    set void "(void|)"
-} else {
-    set void ""
-}
+# HP-UX: HP aCC compiler w/ +objdebug option detects language as
+# c++, so we need the 'void' pattern here.
+# Without +objdebug compilation option we still need to match ''.
+# - guo
+# Also, using stabs we will mark these functions as prototyped.  This
+# is harmless but causes an extra VOID to be printed.
+set void "(void|)"
 
 # test whatis command with functions return type
 gdb_test "whatis v_char_func" \
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.297
diff -u -p -r1.297 Makefile.in
--- Makefile.in	21 Dec 2002 05:07:36 -0000	1.297
+++ Makefile.in	23 Dec 2002 19:48:21 -0000
@@ -662,7 +662,7 @@ gdb_string_h = gdb_string.h
 gdb_thread_db_h = gdb_thread_db.h
 gdb_vfork_h = gdb_vfork.h
 gdb_wait_h = gdb_wait.h
-gdbarch_h = gdbarch.h $(dis_asm_h) $(value_h) $(inferior_h)
+gdbarch_h = gdbarch.h $(dis_asm_h) $(inferior_h)
 gdbcmd_h = gdbcmd.h $(command_h) $(ui_out_h)
 gdbcore_h = gdbcore.h $(bfd_h)
 gdbthread_h = gdbthread.h $(breakpoint_h) $(frame_h)


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