Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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.


  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