In kernel 2.6.18 the vdso page is no longer mapped for a.out binaries. For instance a program using sleep will sigsegv on delivery of SIGALRM (to be precise: on return from signal handling). I tested this using a static a.out binary. This program does work in 2.6.17 . cat /proc/pid/smaps does show that vdso is not mapped in 2.6.18 for an a.out binary. I had a look at fs/binfmt_elf.c and found that the vdso pages is mapped using arch_setup_additional_pages from arch/i386/kernel/sysenter.c for elf. I did a test calling arch_setup_additional_pages from fs/binfmt_aout.c with positive result. As arch_setup_additional_pages is defined in arch/i368-asm/elf.h only, I see no clean way to provide a patch for fs/binfmt_aout.c. I investigated this using vanilla kernels and check gentoo-sources-2.6.18-r3.
I checked vanilla 2.6.19.1: the bug is still there.
But 2.6.17 is ok?
Yes, I checked vanilla 2.6.17.14 and the test program does work and /proc/pid/smaps shows vdso mapping. Shall I provide a simple a.out test program ? A working gcc 2.7 will be hard to find nowadays.
Please file this upstream at http://bugzilla.kernel.org clearly marking it as a 2.6.18 regression. Post the new bug URL here. If you don't get any response after a few days and you are really keen, you could do a bisection to find the exact commit which introduced the issue. http://www.reactivated.net/weblog/archives/2006/01/using-git-bisect-to-find-buggy-kernel-patches/
The upstream bug is http://bugzilla.kernel.org/show_bug.cgi?id=7891
.
This is fixed in gentoo-sources-2.6.20-r2