public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "Wolfgang at Solfrank dot net" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c/50581] stdarg doesn't support array types
Date: Sun, 02 Oct 2011 16:09:00 -0000	[thread overview]
Message-ID: <bug-50581-4-uWDKlQz89g@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-50581-4@http.gcc.gnu.org/bugzilla/>

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50581

--- Comment #6 from Wolfgang at Solfrank dot net 2011-10-02 16:08:51 UTC ---
(In reply to comment #5)
> On Sat, 1 Oct 2011, Wolfgang at Solfrank dot net wrote:
> 
> > > Passing va_list as a function argument is generally hard, whether or not 
> > > variadic, since you don't know whether it will be passed by reference or 
> > > by value or what the type of the address of a va_list parameter will be.  
> > > Portable code needs to pass a pointer to va_list or a structure containing 
> > > va_list or use some other such means of avoiding dependence on whether 
> > > va_list is an array.
> > 
> > Huh?  What about vprintf and friends?  They are defined to take a va_list as
> > their last parameter.
> 
> There are some things you can do - for example, calling those functions in 
> accordance with the rules given in the C standard.  There are various 
> things that cause problems - for example, taking the address of a 
> parameter declared as a va_list (because the parameter type may have been 
> changed from va_list to pointer-to-element-of-va_list as part of the 
> parameter type adjustment of parameters declared as arrays, so the type of 
> &parameter may not be va_list *).

But I don't want to take the address of a va_list parameter.  I just want to
handle it with stuff defined in stdarg.h.

Actually, I'm not sure why va_list is defined as an array in some of the
architectures.  The problem wouldn't arise if va_list were just defined as the
structure that it's currently defined as an array of.

Anyway, I still consider it a bug that gcc when called with -std=c99 compiles
va_arg with array type without any hint into code that cannot possibly be
useful, as it expects the array to be passed by value to the variadic function.


  parent reply	other threads:[~2011-10-02 16:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-30 15:49 [Bug c/50581] New: " Wolfgang at Solfrank dot net
2011-09-30 20:13 ` [Bug c/50581] " joseph at codesourcery dot com
2011-10-01 11:07 ` Wolfgang at Solfrank dot net
2011-10-01 14:08 ` joseph at codesourcery dot com
2011-10-01 14:43 ` Wolfgang at Solfrank dot net
2011-10-01 18:46 ` joseph at codesourcery dot com
2011-10-02 16:09 ` Wolfgang at Solfrank dot net [this message]
2011-10-02 19:48 ` svfuerst at gmail dot com
2022-01-03  2:38 ` pinskia at gcc dot gnu.org

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=bug-50581-4-uWDKlQz89g@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).