summary refs log tree commit diff
path: root/elf/rtld-Rules
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@redhat.com>2013-05-14 00:06:35 -0400
committerCarlos O'Donell <carlos@redhat.com>2013-05-14 00:06:35 -0400
commit141af660d825d4443cbc5c24d29d57d6f8b0950f (patch)
tree5fbe6797772008e388849a6384384492e91e247f /elf/rtld-Rules
parent5d5ef5dbfc5be7aec31e5d33d28b2e93dc4b8a8d (diff)
downloadglibc-141af660d825d4443cbc5c24d29d57d6f8b0950f.tar.gz
glibc-141af660d825d4443cbc5c24d29d57d6f8b0950f.tar.xz
glibc-141af660d825d4443cbc5c24d29d57d6f8b0950f.zip
Add comments to vDSO hwcap loading process.
Loading of the vDSO pseudo-hwcap from the type 2 GNU note is
a rather arcane and poorly documented process. Given that I had
a chance to review this code today I thought I would add all
of the things I had to lookup to verify the validity of the
process.

With a single .note.GNU the vDSO can register up to 64 flags,
though in practice you are limited to 64 - _DL_FIRST_EXTRA
bits which on x86 is 12 bits.

The only use of this that I know of is in the Xen support
in Linux where they use the 1st bit to indicate "nosegneg".
I see "We use bit 1 to avoid bugs in some versions of glibc
when bit 0 is used; the choice is otherwise arbitrary.", but
no reference to a glibc bug anywhere. The code as-is should
support bit zero, so we still have that free for future use.

The kernel, glibc, and ld.so.cache must coordinate to ensure
that bit values don't go too high and are used consistently.

---

2013-05-13  Carlos O'Donell  <carlos@redhat.com>

	* elf/dl-hwcaps.c (_dl_important_hwcaps): Comment vDSO hwcap loading.
	* elf/ldconfig.c (is_hwcap_platform): Comment each hwcap check.
	(main): Comment "tls" pseudo-hwcap.
Diffstat (limited to 'elf/rtld-Rules')
0 files changed, 0 insertions, 0 deletions