makecontext and its arguments

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


Jakub Jelinek <jakub@redhat.com> writes:

|> On Mon, Aug 05, 2002 at 10:15:06PM +0200, Andreas Schwab wrote:
|> > Ulrich Drepper <drepper@redhat.com> writes:
|> > 
|> > |> Andreas Jaeger wrote:
|> > |> > That interpretation of long causes problems for x86-64 since ints are
|> > |> > not sign extented when passed in varargs...
|> > |> 
|> > |> How about fixing this mistake in the compiler with a function attribute?
|> > 
|> > ???  There is no way to find out the right type in va_arg.  Either the
|> > types match, or you get undefined behaviour.  If you pass an int and
|> > retrieve it as a long all bets are off.
|> 
|> Adding __attribute__((sane_x86_64_varargs)) to makecontext and make gcc
|> promote all varargs into DImode when calling vararg functions with
|> this attribute?

How do you know whether you are supposed to sign extend or not?

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