From: Jim Blandy <jimb@zwingli.cygnus.com>
To: gdb-patches@sources.redhat.com
Subject: RFA: clarify documentation for COERCE_FLOAT_TO_DOUBLE
Date: Fri, 02 Nov 2001 10:24:00 -0000 [thread overview]
Message-ID: <20011113165731.DFA805E9D8@zwingli.cygnus.com> (raw)
... or at least, it's meant to be a clarification.
2001-11-13 Jim Blandy <jimb@redhat.com>
* gdbint.texinfo (COERCE_FLOAT_TO_DOUBLE): Clarify.
Index: gdb/doc/gdbint.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdbint.texinfo,v
retrieving revision 1.43
diff -c -r1.43 gdbint.texinfo
*** gdb/doc/gdbint.texinfo 2001/11/06 11:01:22 1.43
--- gdb/doc/gdbint.texinfo 2001/11/13 16:45:16
***************
*** 2815,2844 ****
@item COERCE_FLOAT_TO_DOUBLE (@var{formal}, @var{actual})
@findex COERCE_FLOAT_TO_DOUBLE
@cindex promotion to @code{double}
! If we are calling a function by hand, and the function was declared
! (according to the debug info) without a prototype, should we
! automatically promote @code{float}s to @code{double}s? This macro
! must evaluate to non-zero if we should, or zero if we should leave the
! value alone.
! The argument @var{actual} is the type of the value we want to pass to
! the function. The argument @var{formal} is the type of this argument,
! as it appears in the function's definition. Note that @var{formal} may
! be zero if we have no debugging information for the function, or if
! we're passing more arguments than are officially declared (for example,
! varargs). This macro is never invoked if the function definitely has a
! prototype.
! @findex set_gdbarch_coerce_float_to_double
@findex standard_coerce_float_to_double
! The default behavior is to promote only when we have no type information
! for the formal parameter. This is different from the obvious behavior,
! which would be to promote whenever we have no prototype, just as the
! compiler does. It's annoying, but some older targets rely on this. If
! you want @value{GDBN} to follow the typical compiler behavior---to always
! promote when there is no prototype in scope---your gdbarch @code{init}
! function can call @code{set_gdbarch_coerce_float_to_double} and select
! the @code{standard_coerce_float_to_double} function.
@item CPLUS_MARKER
@findex CPLUS_MARKERz
--- 2815,2860 ----
@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.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 CPLUS_MARKER
@findex CPLUS_MARKERz
next reply other threads:[~2001-11-13 16:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-02 10:24 Jim Blandy [this message]
2001-11-02 23:52 ` Eli Zaretskii
2001-11-04 0:14 ` Jim Blandy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20011113165731.DFA805E9D8@zwingli.cygnus.com \
--to=jimb@zwingli.cygnus.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox