From: Michael Snyder <msnyder@cygnus.com>
To: Jim Blandy <jimb@cygnus.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: RFA: GCC stabs don't contain prototype info
Date: Thu, 15 Nov 2001 02:38:00 -0000 [thread overview]
Message-ID: <3C040F8D.695C4DA0@cygnus.com> (raw)
Message-ID: <20011115023800.Fa1eOzTS9voh9078XZwroYm6i2Kkp-TX0NzmDX-MQTA@z> (raw)
In-Reply-To: <20011127034423.DF2B75E9D8@zwingli.cygnus.com>
Jim Blandy wrote:
>
> This comes as a bit of a surprise to me, but it seems that stabs
> generated by GCC don't indicate whether a given function was defined
> with a prototype or not. The argument types should appear after the
> return types, each preceded by a semicolon, but for the following
> input program:
>
> int foo (int a, float b) { return a + b; }
>
> `gcc -save-temps -O2 -g -c' generates the following relevant stabs:
>
> .stabs "int:t(0,1)=r(0,1);0020000000000;0017777777777;",128,0,0,0
> .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
> .stabs "foo:F(0,1)",36,0,1,foo
> .stabs "a:P(0,1)",64,0,1,8
> .stabs "b:P(0,12)",64,0,1,9
> .stabs "",36,0,0,.LLscope0-foo
> .stabs "",100,0,0,.Letext
>
> There is no no prototype info here. There's no way for GDB to know
> that the function expects its second argument to be passed as a float,
> not promoted to a double, as the K&R-style rules specify.
Yes, this is an old, old issue. The test (float2) in callfuncs.exp
was designed to reveal this problem. Unfortunately a few years ago
somebody went thru callfuncs.c and protoized all of the functions,
thus defeating this test. I've recently restored it, which is why
you may be suddenly seeing the fails again.
>
> Thus:
>
> 2001-11-26 Jim Blandy <jimb@redhat.com>
>
> * gdb.base/callfuncs.exp: The stabs generated by GCC don't tell us
> whether functions are prototyped or not, so we can't possibly pass
> arguments to t_float_values2 properly.
Yep, that's why it's there. I suppose xfailing it is reasonable,
if there is no hope of it ever being fixed.
>
> Index: gdb/testsuite/gdb.base/callfuncs.exp
> ===================================================================
> RCS file: /cvs/cvsfiles/devo/gdb/testsuite/gdb.base/callfuncs.exp,v
> retrieving revision 1.46
> diff -c -r1.46 callfuncs.exp
> *** gdb/testsuite/gdb.base/callfuncs.exp 2001/11/10 00:08:23 1.46
> --- gdb/testsuite/gdb.base/callfuncs.exp 2001/11/27 03:24:59
> ***************
> *** 142,147 ****
> --- 142,150 ----
> 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
> ***************
> *** 152,158 ****
> --- 155,166 ----
> setup_xfail "alpha-dec-osf2*" "i*86-*-sysv4*" 5318
> }
> }
> +
> + # 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"
>
> gdb_test "p t_double_values(0.0,0.0)" " = 0"
> ***************
> *** 289,294 ****
> --- 297,304 ----
> }
> }
> }
> +
> + get_debug_format
>
> # Make sure that malloc gets called and that the floating point unit
> # is initialized via a call to t_double_values.
next prev parent reply other threads:[~2001-11-27 22:10 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-26 19:43 Jim Blandy
2001-11-13 10:56 ` Jim Blandy
2001-11-26 19:47 ` Daniel Jacobowitz
2001-11-13 11:07 ` Daniel Jacobowitz
2001-11-26 20:19 ` Jim Blandy
2001-11-13 15:38 ` Jim Blandy
2001-11-27 14:16 ` Michael Snyder
2001-11-15 7:01 ` Michael Snyder
2001-11-15 8:00 ` Daniel Berlin
2001-11-27 14:27 ` Daniel Berlin
2001-11-27 20:49 ` Jim Blandy
2001-11-16 10:45 ` Jim Blandy
2001-11-27 14:10 ` Michael Snyder [this message]
2001-11-15 2:38 ` Michael Snyder
2001-12-07 13:17 ` 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=3C040F8D.695C4DA0@cygnus.com \
--to=msnyder@cygnus.com \
--cc=gdb-patches@sources.redhat.com \
--cc=jimb@cygnus.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