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] |
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] |