Date: Tue, 20 Jan 1998 20:09:35 -0600 (CST) From: Joel Ray Holveck <joelh@gnu.org> To: fenner@parc.xerox.com Cc: sef@kithrup.com, current@FreeBSD.ORG Subject: Re: Nasty GCC bug? Message-ID: <199801210209.UAA01144@detlev.UUCP> In-Reply-To: <98Jan20.171409pst.177476@crevenia.parc.xerox.com> (message from Bill Fenner on Tue, 20 Jan 1998 17:14:03 PST) References: <98Jan20.171409pst.177476@crevenia.parc.xerox.com>
next in thread | previous in thread | raw e-mail | index | archive | help
>>> ... on systems which do not use an integer stack based calling
>>> convention, the value can be treated as its type by the varradic
>>> function, instead of being treated as an int. It is the promotion
>>> caused by the calling convention that is the source of the
>>> breakage.
>> It *has* always been the case; not doing it this way is a bug.
> Not quite. If you don't do it this way, the behavior is undefined --
> section 7.8.2.1:
> ...or if type is not compatible with the type of the actual
> next argument (as promoted according to the default argument
> promotions), the behavior is undefined.
> So it's not *wrong* to allow chars to be passed into varargs functions
> as chars, but the ANSI C specification doesn't require it. Terry wants
> to define some of this undefined behavior.
I read this to mean that the promotions are required, it's just that
if you mismatch types (eg, printf("%s",15);) then the results are
undefined.
Best,
joelh
--
Joel Ray Holveck - joelh@gnu.org - http://www.wp.com/piquan
Fourth law of programming:
Anything that can go wrong wi
sendmail: segmentation violation - core dumped
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199801210209.UAA01144>
