gdb/
authorDaniel Jacobowitz <drow@false.org>
Sat, 4 Jan 2003 22:37:49 +0000 (22:37 +0000)
committerDaniel Jacobowitz <drow@false.org>
Sat, 4 Jan 2003 22:37:49 +0000 (22:37 +0000)
* 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.
doc/
* gdb.texinfo (Controlling GDB): Add ABI section.  Document
"set coerce-float-to-double".
* gdbint.texinfo (COERCE_FLOAT_TO_DOUBLE): Remove documentation.
testsuite/
* 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.

34 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/alpha-tdep.c
gdb/arm-tdep.c
gdb/buildsym.h
gdb/config/m32r/tm-m32r.h
gdb/config/pa/tm-hppa.h
gdb/config/sparc/tm-sparc.h
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/doc/gdbint.texinfo
gdb/frv-tdep.c
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/h8300-tdep.c
gdb/hppa-tdep.c
gdb/hpread.c
gdb/i386-sol2-tdep.c
gdb/mdebugread.c
gdb/mips-tdep.c
gdb/rs6000-tdep.c
gdb/s390-tdep.c
gdb/sh-tdep.c
gdb/sparc-tdep.c
gdb/stabsread.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/callfuncs.exp
gdb/testsuite/gdb.base/completion.exp
gdb/testsuite/gdb.base/whatis.exp
gdb/v850-tdep.c
gdb/valops.c
gdb/value.h
gdb/xstormy16-tdep.c

index f2275b997f1b90f8c2f3a7a7be950c194d1f3328..62e95d6db6f5e3a7be4c6c8199e84d1adcc6585d 100644 (file)
@@ -1,3 +1,47 @@
+2003-01-04  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.
+
 2003-01-04  Daniel Jacobowitz  <drow@mvista.com>
 
        * regformats/reg-m68k.dat: Remove fpcode and fpflags.
index 1c55a7ec292587098d28f8969d1178dcfd6f1006..bf8f0d378c3fa16294944325217ed7e22f1f9bee 100644 (file)
@@ -633,7 +633,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 ea68302b9309a4ff0b65350525c5aaed30af6ce6..8db5da82d4cc5f358ed6a0a6feafd1728caa7ddf 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-dependent code for the ALPHA architecture, for GDB, the GNU Debugger.
-   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -1902,10 +1902,6 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   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 b82f9e7ce886fe46cb4e10154b71bd5142c878e8..e43c3331fd68ef4296adc56ec44148209b06aae1 100644 (file)
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on ARM systems.
    Copyright 1988, 1989, 1991, 1992, 1993, 1995, 1996, 1998, 1999, 2000,
-   2001, 2002 Free Software Foundation, Inc.
+   2001, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -2913,8 +2913,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   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 c23046224a3c87aaa51f711e24fc7d469bccf76f..51aeee75638aa06d8dd0b80f50561b795f1f24cd 100644 (file)
@@ -1,6 +1,6 @@
 /* Build symbol tables in GDB's internal format.
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1996,
-   1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   1997, 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -83,16 +83,6 @@ EXTERN unsigned char processing_gcc_compilation;
 
 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 70a30a8a55774d969f4708574973adc1ebf2db49..8dc86e4d680133a7312d2843763b80070b3ec2a0 100644 (file)
@@ -1,5 +1,6 @@
 /* Parameters for execution on a Mitsubishi m32r processor.
-   Copyright 1996, 1997 Free Software Foundation, Inc. 
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+   Free Software Foundation, Inc. 
 
    This file is part of GDB.
 
@@ -164,8 +165,6 @@ extern CORE_ADDR m32r_skip_prologue (CORE_ADDR pc);
 /* 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 713931a5a2add43c1f13682f16cc6e640b452986..6262008a351200b7191b6e88f6bc3fa2d169c4cf 100644 (file)
@@ -1,6 +1,6 @@
 /* Parameters for execution on any Hewlett-Packard PA-RISC machine.
    Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-   1998, 1999, 2000 Free Software Foundation, Inc.
+   1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -786,18 +786,6 @@ extern CORE_ADDR hppa_target_read_fp (void);
 #define HPREAD_ADJUST_STACK_ADDRESS(ADDR) hpread_adjust_stack_address(ADDR)
 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.  */
-
-#if !GDB_MULTI_ARCH
-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)
-#endif
-
 /* 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 13a0f82d7a497714b6607b7f244b5995e7828765..404f685041e617333538599b3cced3fd776eed66 100644 (file)
@@ -1,7 +1,7 @@
 /* Target machine sub-parameters for SPARC, for GDB, the GNU debugger.
    This is included by other tm-*.h files to define SPARC cpu-related info.
    Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-   1998, 1999, 2000
+   1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
    Contributed by Michael Tiemann (tiemann@mcc.com)
 
@@ -280,14 +280,6 @@ extern void sparc_store_return_value (struct type *, char *);
 
 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 0975876c0154fb589ac046ab2ffd2ce030f78687..c7e26c78c1a074ad9fb33be27cdbeb0051f73925 100644 (file)
@@ -1,3 +1,9 @@
+2003-01-04  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.
+
 2003-01-02  Andrew Cagney  <ac131313@redhat.com>
 
        * stabs.texinfo: Remove obsolete text.
index f4607b21d1a89f483b464e7fe89b5c030d09edc4..af42b0053b56345d4bb332a70fe42448a710d132 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo      @c -*-texinfo-*-
 @c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-@c 1999, 2000, 2001, 2002
+@c 1999, 2000, 2001, 2002, 2003
 @c Free Software Foundation, Inc.
 @c
 @c %**start of header
@@ -54,7 +54,7 @@ of @cite{Debugging with @value{GDBN}: the @sc{gnu} Source-Level Debugger}
 for @value{GDBN} Version @value{GDBVN}.
 
 Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@*
-              1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+              1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -87,7 +87,7 @@ development.''
 
 @vskip 0pt plus 1filll
 Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+1996, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 @sp 2
 Published by the Free Software Foundation @*
 59 Temple Place - Suite 330, @*
@@ -118,7 +118,7 @@ This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
 This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
 @value{GDBVN}.
 
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
+Copyright (C) 1988-2003 Free Software Foundation, Inc.
 
 @menu
 * Summary::                     Summary of @value{GDBN}
@@ -12256,6 +12256,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
@@ -12502,6 +12503,39 @@ Display the current default base for numeric input.
 Display the current default base for numeric display.
 @end table
 
+@node ABI
+@section Configuring the current ABI
+
+@value{GDBN} can determine the @dfn{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
 @section Optional warnings and messages
 
index c8053c08bc8736f2dbe5c42894d42d84e5b7757e..9ce6ecb88b6a0e4da47467c651b1086bacca8586 100644 (file)
@@ -8,7 +8,7 @@
 
 @ifinfo
 This file documents the internals of the GNU debugger @value{GDBN}.
-Copyright 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,2002
+Copyright 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,2002,2003
    Free Software Foundation, Inc.
 Contributed by Cygnus Solutions.  Written by John Gilmore.
 Second Edition by Stan Shebs.
@@ -50,8 +50,8 @@ Software Foundation raise funds for GNU development.''
 @end tex
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001, 2002
-   Free Software Foundation, Inc.
+Copyright @copyright{} 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,
+   2002, 2003  Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -3144,50 +3144,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 0c14e53a007fc5bfe742ba21c7779829d37a0ce2..b4c6629dab59e8d5c4c6820628f2028ec9ecc96b 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-dependent code for the Fujitsu FR-V, for GDB, the GNU Debugger.
-   Copyright 2002 Free Software Foundation, Inc.
+   Copyright 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1097,8 +1097,6 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* 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 938d9faaed231c98f70d9ea915ae02d4234e4937..0a91cc6cc0dd54617689ef0b503ee05f8e1a2c21 100644 (file)
@@ -1,7 +1,7 @@
 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
 
 /* Dynamic architecture support for GDB, the GNU debugger.
-   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -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 *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, struct ui_file *file)
                         (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 */
@@ -3870,25 +3855,6 @@ set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch,
   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
 gdbarch_get_saved_register_p (struct gdbarch *gdbarch)
 {
index 0b2381f9984fbf433d75af7e78dc2c2f49a8cc1c..24e6a11f28a77918e4d4e8eccf768ce60cbf6d0d 100644 (file)
@@ -1,7 +1,7 @@
 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
 
 /* Dynamic architecture support for GDB, the GNU debugger.
-   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -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
 
@@ -1274,23 +1273,6 @@ extern void set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int
 #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
-
 #if defined (GET_SAVED_REGISTER)
 /* Legacy for systems yet to multi-arch GET_SAVED_REGISTER */
 #if !defined (GET_SAVED_REGISTER_P)
index e2da438173bc2a9f677c65b5e14a8fe12a7d12d1..ceca635c0715c60226e8a71b036b886243f5d8c0 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh -u
 
 # Architecture commands for GDB, the GNU debugger.
-# Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
@@ -518,7 +518,6 @@ F::DEPRECATED_INIT_FRAME_PC:CORE_ADDR:deprecated_init_frame_pc:int fromleaf, str
 #
 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
@@ -732,7 +731,7 @@ cat <<EOF
 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
 
 /* Dynamic architecture support for GDB, the GNU debugger.
-   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -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 471909549e81e3853d63f3bc3c434f59ce71511e..66ecd33fe6910535930adacfb1198f31e26d6570 100644 (file)
@@ -1,7 +1,7 @@
 /* Target-machine dependent code for Hitachi H8/300, for GDB.
 
    Copyright 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-   1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1135,9 +1135,6 @@ h8300_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   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 3caa3fce1d0ac2a4892e71965a89ecccdfc948b7..9fad7aa3d3aaee763d25c246bb16bff0caf74fff 100644 (file)
@@ -1,7 +1,7 @@
 /* Target-dependent code for the HP PA architecture, for GDB.
 
    Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   1996, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -175,7 +175,6 @@ CORE_ADDR hppa_smash_text_address (CORE_ADDR addr);
 CORE_ADDR hppa_target_read_pc (ptid_t ptid);
 void hppa_target_write_pc (CORE_ADDR v, ptid_t ptid);
 CORE_ADDR hppa_target_read_fp (void);
-int hppa_coerce_float_to_double (struct type *formal, struct type *actual);
 
 typedef struct
   {
@@ -4942,19 +4941,6 @@ hppa_smash_text_address (CORE_ADDR addr)
   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 *
 hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
@@ -5040,7 +5026,6 @@ hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_read_pc (gdbarch, hppa_target_read_pc);
   set_gdbarch_write_pc (gdbarch, hppa_target_write_pc);
   set_gdbarch_read_fp (gdbarch, hppa_target_read_fp);
-  set_gdbarch_coerce_float_to_double (gdbarch, hppa_coerce_float_to_double);
 
   return gdbarch;
 }
index d64b4cae62da76a63ef3fee23d48f463de5caf1c..0323f022ffcaaf6e5d63a31c32a266991c2999f0 100644 (file)
@@ -1,5 +1,5 @@
 /* Read hp debug symbols and convert to internal format, for GDB.
-   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -5242,6 +5242,11 @@ hpread_process_one_debug_symbol (union dnttentry *dn_bufp, char *name,
       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 792923cd44e579a542a9e0c41fd47c243171d2ad..f58c455522dcd455b4a8d5efb1d8de8711fb04e2 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-dependent code for Solaris x86.
-   Copyright 2002 Free Software Foundation, Inc.
+   Copyright 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -47,10 +47,6 @@ i386_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   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);
 }
 \f
 
index b5a15c38d7d9f0dad726ac7a81a9982b10b2f41d..e7bbc10625323b33f128c9a90b61e59473d5519b 100644 (file)
@@ -1,6 +1,6 @@
 /* Read a symbol table in ECOFF format (Third-Eye).
    Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-   1997, 1998, 1999, 2000, 2001, 2002
+   1997, 1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
    Original version contributed by Alessandro Forin (af@cs.cmu.edu) at
    CMU.  Major work by Per Bothner, John Gilmore and Ian Lance Taylor
@@ -795,6 +795,11 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
       /* 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 e8bce383185cc87b55774b878cf499e8013e9101..d618e533b4fa788dae4cb4192eff48bd8ed0e51b 100644 (file)
@@ -1,7 +1,7 @@
 /* Target-dependent code for the MIPS architecture, for GDB, the GNU Debugger.
 
    Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-   1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
    Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU
    and by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin.
@@ -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
@@ -6013,8 +5995,6 @@ mips_gdbarch_init (struct gdbarch_info info,
   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);
   set_gdbarch_frameless_function_invocation (gdbarch, 
index 98cf2d9f0de91411f0560c15c30616c3cb62a5ac..d03d36d29d340f13b1ddffc9b0d217ec775e1339 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for GDB, the GNU debugger.
    Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-   1998, 1999, 2000, 2001, 2002
+   1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -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 info, struct gdbarch_list *arches)
   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 6f48b3251bbaedfaa0325b7f5928aac93ec308da..961ff4fc89254c1fd6d9b1ea9b88304d10d8d9b9 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for GDB, the GNU debugger.
 
-   Copyright 2001, 2002 Free Software Foundation, Inc.
+   Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
 
    Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
    for IBM Deutschland Entwicklung GmbH, IBM Corporation.
@@ -1840,8 +1840,6 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   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 41c609e208cc5a19c99723c1c03487c2e01d6deb..741f3f5d42650f1d5c555408e33b66b93556d1b2 100644 (file)
@@ -1,5 +1,5 @@
 /* Target-dependent code for Hitachi Super-H, for GDB.
-   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -2319,12 +2319,6 @@ sh_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs,
 }
 #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 info, struct gdbarch_list *arches)
   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 8f5097e22ac1b9685e71c33138a9e48639825847..7e8bcca81159bc8d5a7717524cd7b9dc15016061 100644 (file)
@@ -1,7 +1,7 @@
 /* Target-dependent code for the SPARC for GDB, the GNU debugger.
 
    Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation,
+   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
    Inc.
 
    This file is part of GDB.
@@ -3007,14 +3007,6 @@ sparc_gdbarch_fix_call_dummy (char *dummy,
     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 info, struct gdbarch_list *arches)
   /* 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 0e0947d5055c674ec6f76baa77db9cc2461bd6e3..b74f52befda314d73636f0f66cccd94bff75547b 100644 (file)
@@ -1,6 +1,6 @@
 /* Support routines for decoding "stabs" debugging information format.
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1997, 1998, 1999, 2000, 2001, 2002
+   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -1533,9 +1533,13 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
       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 e6096aaba314d835a8bfe8ba42a25d52d4d972b7..6602520393504c48d8cd591aa8acd4d035b370e3 100644 (file)
@@ -1,3 +1,10 @@
+2003-01-04  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.
+
 2003-01-04  Daniel Jacobowitz  <drow@mvista.com>
 
        * gdb.c++/casts.exp: Correct regexp.
index 90f83434f43425b603f17f0d433feb97616cc683..9183fe46b82f01058d7b341d3e768e120e40d88a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -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 332e1697a7fae02277fbde06863aa3982283bcfa..512bbdbcd2e20aadfbbc63b3657c636282c7d0da 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1998, 1999, 2002 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -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 79c48e4da7001ec2cc444340d5869fd4a15faba7..98af77a34174d8c012972a3d090640141063fcd6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1999, 2002
+# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1999, 2002, 2003
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -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 44b3a3086c55c45e9cbac99b6ce1e43545f324c6..851ba079414d7d44ac0dbfc589b347ca576df232 100644 (file)
@@ -1,5 +1,6 @@
 /* Target-dependent code for the NEC V850 for GDB, the GNU debugger.
-   Copyright 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003
+   Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1256,8 +1257,6 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   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 db778afa94a8b68e2b10700684fa3ddaf5e57102..d3906f9faeefa26568469cf6bcdf9c9de49efc10 100644 (file)
@@ -1,6 +1,6 @@
 /* Perform non-arithmetic operations on values, for GDB.
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -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;
-\f
 
+/* 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;
+\f
 
 /* Find the address of function name NAME in the inferior.  */
 
@@ -1054,49 +1076,6 @@ default_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
   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.
 
@@ -1139,11 +1118,7 @@ value_arg_coerce (struct value *arg, struct type *param_type,
        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;
@@ -3496,4 +3471,19 @@ is received while in a function called from gdb (call dummy).  If set, gdb\n\
 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 f09c247232667d652fc10814ab0ccf693f246510..7e108c691e21a6f7653a6adedae10598baeb1668 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions for values of C expressions, for GDB.
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -548,10 +548,6 @@ extern struct value *value_slice (struct value *, int, int);
 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 4cf9794b66cd9a98728e49c74b7690b45bffbbe8..0c14f3da14fec819609c897b4d227c131a0c672c 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Sanyo Xstormy16a (LC590000) processor.
 
-   Copyright 2001, 2002 Free Software Foundation, Inc.
+   Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1078,10 +1078,6 @@ xstormy16_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* 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
    *