makecontext and its arguments

Andreas Schwab schwab@suse.de
Mon Aug 5 13:46:00 GMT 2002


Ulrich Drepper <drepper@redhat.com> writes:

|> Andreas Schwab wrote:
|> > Jakub Jelinek <jakub@redhat.com> writes:
|> > |> On Mon, Aug 05, 2002 at 10:29:55PM +0200, Andreas Schwab wrote:
|> > |> > |> Adding __attribute__((sane_x86_64_varargs)) to makecontext and make gcc
|> > |> > |> promote all varargs into DImode when calling vararg functions with
|> > |> > |> this attribute?
|> > [...]
|> > How does that help in any way?  If you pass an unsigned int to
|> > makecontext it is not supposed to be signed extended, but zero extended
|> > when assigned to long.  There is no way for va_arg to know that.
|> 
|> What part of "function attribute" do you not understand?

The compiler cannot know what type of va_arg call are used inside
makecontext.  And what if you pass a long long where sizeof (long long) >
sizeof (long)?  The whole thing is just ill-defined.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Libc-hacker mailing list