This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: makecontext and its arguments


Jakub Jelinek <jakub@redhat.com> writes:

|> On Mon, Aug 05, 2002 at 10:37:25PM +0200, 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 do you know whether you are supposed to sign extend or not?
|> > |> 
|> > |> If the type of the argument passed to vararg function is signed, you
|> > |> sign extend, otherwise zero extend. That's what all other 64-bit ABIs do.
|> > 
|> > 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.
|> 
|> ?? va_arg doesn't need to know that. It would always do va_arg(ap, long).
|> For:
|> unsigned int x;
|> int y;
|> extern void __attribute__((sane_x86_64_varargs)) makecontext (ucontext_t *, void (*)(), int, ...);
|> 
|> {
|> ...
|> makecontext (ucp, fun, 2, x, y);
|> }
|> gcc would ensure that x is zero extended and y sign extended
|> before calling it.

To which type?  What if the integer is of type __int128 (TImode)?

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."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]