From: Markus Gutschke Gcc reserves %ebx when compiling position-independent-code on i386. This means, the _syscallX() macros in include/asm-i386/unistd.h will not compile. This patch is against 2.6.15.6 and changes the existing macros to take special care to preserve %ebx. The bug can be tracked at http://bugzilla.kernel.org/show_bug.cgi?id=6204 Signed-off-by: Markus Gutschke --- Andrew Morton wrote: > Markus Gutschke wrote: >>That is certainly possible. The new macros work in both modes, but they >>are slightly less efficient than the old macros, if you have access to >>%ebx (i.e. in non-PIC code). If you prefer, we could just remove the old >>macros and unconditionally replace them with the new ones. > > I'd be OK with that - the kernel doesn't (shouldn't) care about the > performance of __KERNEL_SYSCALLS__ stuff. I doubt if glibc is borrowing > the kernel's macros. Would you like this patch better? It now unconditionally replaces the old macros with a fixed version. This will entail a minor performance penalty in non-PIC mode. But for the vast majority of applications the difference should be entire negligible. Once this change has made it into the kernel, I will try to get it propagated into libc. Markus