diff options
author | Andy Lutomirski <luto@amacapital.net> | 2014-06-18 15:59:48 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2014-06-19 15:45:12 -0700 |
commit | bfad381c0d1e19cae8461e105d8d4387dd2a14fe (patch) | |
tree | c4f4fba23ad53bfe9c6f99c4c9156716fa3fa5c5 /arch/x86/vdso/vdso32 | |
parent | c1979c370273fd9f7326ffa27a63b9ddb0f495f4 (diff) | |
download | linux-bfad381c0d1e19cae8461e105d8d4387dd2a14fe.tar.bz2 |
x86/vdso: Improve the fake section headers
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>
Diffstat (limited to 'arch/x86/vdso/vdso32')
-rw-r--r-- | arch/x86/vdso/vdso32/vdso-fakesections.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/vdso/vdso32/vdso-fakesections.c b/arch/x86/vdso/vdso32/vdso-fakesections.c new file mode 100644 index 000000000000..541468e25265 --- /dev/null +++ b/arch/x86/vdso/vdso32/vdso-fakesections.c @@ -0,0 +1 @@ +#include "../vdso-fakesections.c" |