mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
This patch moves the vDSO setup from libc to loader code, just after the vDSO link_map setup. For static case the initialization is moved to _dl_non_dynamic_init instead. Instead of using the mangled pointer, the vDSO data is set as attribute_relro (on _rtld_global_ro for shared or _dl_vdso_* for static). It is read-only even with partial relro. It fixes BZ#24967 now that the vDSO pointer is setup earlier than malloc interposition is called. Also, vDSO calls should not be a problem for static dlopen as indicated by BZ#20802. The vDSO pointer would be zero-initialized and the syscall will be issued instead. Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabihf, powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu, s390x-linux-gnu, sparc64-linux-gnu, and sparcv9-linux-gnu. I also run some tests on mips. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
47 lines
1.3 KiB
Makefile
47 lines
1.3 KiB
Makefile
# We don't need any header files.
|
|
abi-includes :=
|
|
|
|
abi-variants := 32 64 x32
|
|
|
|
abi-32-condition := !defined __x86_64__
|
|
abi-64-condition := defined __x86_64__ && defined __LP64__
|
|
abi-x32-condition := defined __x86_64__ && defined __ILP32__
|
|
|
|
ifeq ($(subdir),misc)
|
|
sysdep_headers += sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h sys/io.h
|
|
endif
|
|
|
|
ifeq ($(subdir),nptl)
|
|
libpthread-sysdep_routines += elision-lock elision-unlock elision-timed \
|
|
elision-trylock
|
|
CFLAGS-elision-lock.c += -mrtm
|
|
CFLAGS-elision-unlock.c += -mrtm
|
|
CFLAGS-elision-timed.c += -mrtm
|
|
CFLAGS-elision-trylock.c += -mrtm
|
|
endif
|
|
|
|
ifeq ($(subdir),setjmp)
|
|
tests += tst-saved_mask-1
|
|
endif
|
|
|
|
ifeq ($(enable-cet),yes)
|
|
ifeq ($(subdir),elf)
|
|
tests += tst-cet-property-1 tst-cet-property-2
|
|
|
|
CFLAGS-tst-cet-property-1.o += -fcf-protection
|
|
ASFLAGS-tst-cet-property-dep-2.o += -fcf-protection
|
|
|
|
$(objpfx)tst-cet-property-2: $(objpfx)tst-cet-property-dep-2.o
|
|
$(objpfx)tst-cet-property-2.out: $(objpfx)tst-cet-property-2 \
|
|
$(objpfx)tst-cet-property-1.out
|
|
env $(run-program-env) $(test-via-rtld-prefix) \
|
|
$(objpfx)tst-cet-property-2 \
|
|
< $(objpfx)tst-cet-property-1.out > $@; \
|
|
$(evaluate-test)
|
|
endif
|
|
|
|
ifeq ($(subdir),stdlib)
|
|
tests += tst-cet-setcontext-1
|
|
CFLAGS-tst-cet-setcontext-1.c += -mshstk
|
|
endif
|
|
endif
|