mirror of
https://github.com/torvalds/linux.git
synced 2024-12-25 20:32:22 +00:00
bfad381c0d
Fully stripping the vDSO has other unfortunate side effects: - binutils is unable to find ELF notes without a SHT_NOTE section. - Even elfutils has trouble: it can find ELF notes without a section table at all, but if a section table is present, it won't look for PT_NOTE. - gdb wants section names to match between stripped DSOs and their symbols; otherwise it will corrupt symbol addresses. We're also breaking the rules: section 0 is supposed to be SHT_NULL. Fix these problems by building a better fake section table. While we're at it, we might as well let buggy Go versions keep working well by giving the SHT_DYNSYM entry the correct size. This is a bit unfortunate: it adds quite a bit of size to the vdso image. If/when binutils improves and the improved versions become widespread, it would be worth considering dropping most of this. Signed-off-by: Andy Lutomirski <luto@amacapital.net> Link: http://lkml.kernel.org/r/0e546a5eeaafdf1840e6ee654a55c1e727c26663.1403129369.git.luto@amacapital.net Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
30 lines
489 B
ArmAsm
30 lines
489 B
ArmAsm
/*
|
|
* Linker script for 64-bit vDSO.
|
|
* We #include the file to define the layout details.
|
|
*
|
|
* This file defines the version script giving the user-exported symbols in
|
|
* the DSO.
|
|
*/
|
|
|
|
#define BUILD_VDSO64
|
|
|
|
#include "vdso-layout.lds.S"
|
|
|
|
/*
|
|
* This controls what userland symbols we export from the vDSO.
|
|
*/
|
|
VERSION {
|
|
LINUX_2.6 {
|
|
global:
|
|
clock_gettime;
|
|
__vdso_clock_gettime;
|
|
gettimeofday;
|
|
__vdso_gettimeofday;
|
|
getcpu;
|
|
__vdso_getcpu;
|
|
time;
|
|
__vdso_time;
|
|
local: *;
|
|
};
|
|
}
|