This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Fix broken test in callfuncs.c
- To: Michael Snyder <msnyder at cygnus dot com>
- Subject: Re: [RFA] Fix broken test in callfuncs.c
- From: Fernando Nasser <fnasser at redhat dot com>
- Date: Wed, 07 Nov 2001 17:36:40 -0500
- CC: gdb-patches at sources dot redhat dot com
- Organization: Red Hat Canada
- References: <200111072216.fA7MG2m20577@reddwarf.cygnus.com>
Michael Snyder wrote:
>
> Hello,
>
> I just noticed that this test was broken by a change in mid-1999.
> This test has always contained two versions of the function
> 't_float_values': one that is prototyped (ANSI-style) and one
> that is not (K&R style). This is because the K&R version involves
> promotion of floats to doubles, and the ANSI version does not,
> and GDB sometimes has problems determining what to do.
>
> The change in 1999 ANSI-fied all of the functions which
> defeated the purpose of having this specific function non-ANSIfied.
> I want to revert just that part of the change.
>
> Michael
>
Makes sense to me.
Regards,
Fernando
> 2001-11-07 Michael Snyder <msnyder@redhat.com>
>
> * gdb.base/callfuncs.c (t_float_values): This function must
> _not_ be prototyped, and the following function (t_float_values2)
> must be prototyped (if the compiler supports it), so that GDB
> can be tested against both cases. Usually one case involves
> promotion of float to double, while the other does not.
>
> Index: gdb.base/callfuncs.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/testsuite/gdb.base/callfuncs.c,v
> retrieving revision 1.2
> diff -c -3 -p -r1.2 callfuncs.c
> *** callfuncs.c 2000/11/06 20:38:02 1.2
> --- callfuncs.c 2001/11/07 22:11:00
> *************** long long_arg1, long_arg2;
> *** 237,248 ****
> return ((long_arg1 == long_val1) && (long_arg2 == long_val2));
> }
>
> ! #ifdef PROTOTYPES
> ! int t_float_values (float float_arg1, float float_arg2)
> ! #else
> int t_float_values (float_arg1, float_arg2)
> float float_arg1, float_arg2;
> - #endif
> {
> return ((float_arg1 - float_val1) < DELTA
> && (float_arg1 - float_val1) > -DELTA
> --- 237,249 ----
> return ((long_arg1 == long_val1) && (long_arg2 == long_val2));
> }
>
> ! /* NOTE: THIS FUNCTION MUST NOT BE PROTOTYPED!!!!!
> ! There must be one version of "t_float_values" (this one)
> ! that is not prototyped, and one (if supported) that is (following).
> ! That way GDB can be tested against both cases. */
> !
> int t_float_values (float_arg1, float_arg2)
> float float_arg1, float_arg2;
> {
> return ((float_arg1 - float_val1) < DELTA
> && (float_arg1 - float_val1) > -DELTA
> *************** float float_arg1, float_arg2;
> *** 251,263 ****
> }
>
> int
> ! #ifdef PROTOTYPES
> ! t_float_values2 (float float_arg1, float float_arg2)
> ! #else
> /* In this case we are just duplicating t_float_values, but that is the
> easiest way to deal with either ANSI or non-ANSI. */
> t_float_values2 (float_arg1, float_arg2)
> float float_arg1, float_arg2;
> #endif
> {
> return ((float_arg1 - float_val1) < DELTA
> --- 252,264 ----
> }
>
> int
> ! #ifdef NO_PROTOTYPES
> /* In this case we are just duplicating t_float_values, but that is the
> easiest way to deal with either ANSI or non-ANSI. */
> t_float_values2 (float_arg1, float_arg2)
> float float_arg1, float_arg2;
> + #else
> + t_float_values2 (float float_arg1, float float_arg2)
> #endif
> {
> return ((float_arg1 - float_val1) < DELTA
--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9