Messages in this thread | | | Date | Sat, 01 Feb 2014 16:56:56 -0800 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH 3/4] Add 32 bit VDSO time support for 32 bit kernel |
| |
On 02/01/2014 04:41 PM, H. Peter Anvin wrote: >> >> Right. But there's some obscure ABI reason for CONFIG_COMPAT_VDSO, >> and if this breaks it, then it's no good. From extremely vague >> memory, there's some version of SuSE that breaks if the 32-bit vdso >> moves. I have no idea what the bug is, but moving a "compat" address >> seems suspect. >>
Sure enough:
> config COMPAT_VDSO > def_bool y > prompt "Compat VDSO support" > depends on X86_32 || IA32_EMULATION > ---help--- > Map the 32-bit VDSO to the predictable old-style address too. > > Say N here if you are running a sufficiently recent glibc > version (2.3.3 or later), to remove the high-mapped > VDSO mapping and to exclusively use the randomized VDSO. > > If unsure, say Y.
So we need this for 32-bit glibc < 2.3.3, and we effecively have the same problem as on 64 bits. Next question is if those old glibcs rely on the entry point alone or if they also expect the vdso header at that address.
I looked at the glibc diffs from 2.3.2 to 2.3.3, but it isn't really obvious to me what assumptions the 2.3.2 glibc made. Perhaps Roland has any idea?
The safest thing for that might be to have the compat vdso be a completely separate object from the real vdso, and let the former be an object as similar to the current one as possible.
-hpa
| |