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] |
Implementing makecontext on x86-64 I noticed a problem with passing its arguments. The function is defined as: void makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...); There's no way to determine the type of the arguments. The Austin Draft (and also our manual) mentions: The application shall ensure that the value of argc matches the number of integer arguments passed to func; otherwise, the behavior is undefined. The glibc C implementations use va_arg(ap, long) to access the parameter. But this won't work for x86-64 with int arguments since int arguments are not properly sign extented to 64-bit for variable arguments. My question nails down to whether I can safely use va_arg(ap,int) in the makecontext implementation or not. Btw. Our testprogram stdlib/tst-setcontext.c uses: static void f1 (long a0, long a1, long a2, long a3) Shouldn't those be ints? Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |