Re: [patch 17/26] Xen-paravirt_ops: Add nosegneg capability to the vsyscall page notes
From: Jeremy Fitzhardinge <hidden>
Date: 2007-03-16 21:56:32
Also in:
lkml, xen-devel
From: Jeremy Fitzhardinge <hidden>
Date: 2007-03-16 21:56:32
Also in:
lkml, xen-devel
Roland McGrath wrote:
This should be: NOTE_KERNELCAP_BEGIN(1, 1) NOTE_KERNELCAP(0, "nosegneg") NOTE_KERNELCAP_END i.e. 1->0 in the "bit" member. (Note the ld.so.conf.d file must have the matching bit number for ldconfig-based lookups to do the right thing.) Or else: NOTE_KERNELCAP_BEGIN(1, 2) NOTE_KERNELCAP(0, "nosegneg") NOTE_KERNELCAP_END i.e. 1->2 in the "mask" member. (The mask value should be 1<<bit.)
Thanks Roland. I've never really understood this stuff, and I just copied this cargo-cultishly. I'm not quite sure what you're suggesting here though. Do you mean one of: NOTE_KERNELCAP_BEGIN(1, 1) NOTE_KERNELCAP(0, "nosegneg") NOTE_KERNELCAP_END or NOTE_KERNELCAP_BEGIN(1, 2) NOTE_KERNELCAP(1, "nosegneg") NOTE_KERNELCAP_END is the correct thing to use?
Some pre-release glibc's (before 2.4) had a bug in the code that parses this, and would crash parsing the correct note. Using the wrong bit value with nonmatching mask worked around this. IIRC, no glibc release ever included the buggy version of the code. In nonbuggy glibc, the mismatched value causes the "nosegneg" to be omitted from the directory search (under LD_LIBRARY_PATH and default directories), though ldconfig-based lookups will work (the most common case).
Are you saying that one of the corrected forms might cause old glibcs to
crash, or just ignore nosegneg?
J