Module Name: src Committed By: joerg Date: Mon Aug 25 20:40:53 UTC 2014
Modified Files: src/distrib/sets/lists/debug: mi shl.mi src/distrib/sets/lists/tests: mi shl.mi src/libexec/ld.elf_so: headers.c reloc.c rtld.c rtld.h src/libexec/ld.elf_so/arch/aarch64: mdreloc.c src/libexec/ld.elf_so/arch/alpha: alpha_reloc.c src/libexec/ld.elf_so/arch/arm: mdreloc.c src/libexec/ld.elf_so/arch/hppa: hppa_reloc.c src/libexec/ld.elf_so/arch/i386: mdreloc.c src/libexec/ld.elf_so/arch/m68k: mdreloc.c src/libexec/ld.elf_so/arch/mips: mips_reloc.c src/libexec/ld.elf_so/arch/powerpc: ppc_reloc.c src/libexec/ld.elf_so/arch/sh3: mdreloc.c src/libexec/ld.elf_so/arch/sparc: mdreloc.c src/libexec/ld.elf_so/arch/sparc64: mdreloc.c src/libexec/ld.elf_so/arch/vax: mdreloc.c src/libexec/ld.elf_so/arch/x86_64: mdreloc.c src/sys/sys: cdefs_elf.h exec_elf.h src/tests/libexec/ld.elf_so: Makefile Added Files: src/tests/libexec/ld.elf_so: h_ifunc.c t_ifunc.c src/tests/libexec/ld.elf_so/helper_ifunc_dso: Makefile h_helper_ifunc.c Log Message: Add basic support for indirect functions. It allows providing a public function symbol with an implementation choosen at run time. Refactor calls to functions by address in ld.elf_so to create temporary function descriptors on the stack, if the address is not leaked outside. Limitations: - no support for initialising static storage with function pointers - no support for unnamed resolver functions Inspired by FreeBSD's r228435 by k...@freebsd.org. To generate a diff of this commit: cvs rdiff -u -r1.84 -r1.85 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.72 -r1.73 src/distrib/sets/lists/debug/shl.mi cvs rdiff -u -r1.589 -r1.590 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.8 -r1.9 src/distrib/sets/lists/tests/shl.mi cvs rdiff -u -r1.54 -r1.55 src/libexec/ld.elf_so/headers.c cvs rdiff -u -r1.106 -r1.107 src/libexec/ld.elf_so/reloc.c cvs rdiff -u -r1.173 -r1.174 src/libexec/ld.elf_so/rtld.c cvs rdiff -u -r1.119 -r1.120 src/libexec/ld.elf_so/rtld.h cvs rdiff -u -r1.1 -r1.2 src/libexec/ld.elf_so/arch/aarch64/mdreloc.c cvs rdiff -u -r1.40 -r1.41 src/libexec/ld.elf_so/arch/alpha/alpha_reloc.c cvs rdiff -u -r1.37 -r1.38 src/libexec/ld.elf_so/arch/arm/mdreloc.c cvs rdiff -u -r1.42 -r1.43 src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c cvs rdiff -u -r1.35 -r1.36 src/libexec/ld.elf_so/arch/i386/mdreloc.c cvs rdiff -u -r1.29 -r1.30 src/libexec/ld.elf_so/arch/m68k/mdreloc.c cvs rdiff -u -r1.62 -r1.63 src/libexec/ld.elf_so/arch/mips/mips_reloc.c cvs rdiff -u -r1.52 -r1.53 src/libexec/ld.elf_so/arch/powerpc/ppc_reloc.c cvs rdiff -u -r1.30 -r1.31 src/libexec/ld.elf_so/arch/sh3/mdreloc.c cvs rdiff -u -r1.47 -r1.48 src/libexec/ld.elf_so/arch/sparc/mdreloc.c cvs rdiff -u -r1.56 -r1.57 src/libexec/ld.elf_so/arch/sparc64/mdreloc.c cvs rdiff -u -r1.29 -r1.30 src/libexec/ld.elf_so/arch/vax/mdreloc.c cvs rdiff -u -r1.40 -r1.41 src/libexec/ld.elf_so/arch/x86_64/mdreloc.c cvs rdiff -u -r1.44 -r1.45 src/sys/sys/cdefs_elf.h cvs rdiff -u -r1.142 -r1.143 src/sys/sys/exec_elf.h cvs rdiff -u -r1.7 -r1.8 src/tests/libexec/ld.elf_so/Makefile cvs rdiff -u -r0 -r1.1 src/tests/libexec/ld.elf_so/h_ifunc.c \ src/tests/libexec/ld.elf_so/t_ifunc.c cvs rdiff -u -r0 -r1.1 src/tests/libexec/ld.elf_so/helper_ifunc_dso/Makefile \ src/tests/libexec/ld.elf_so/helper_ifunc_dso/h_helper_ifunc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.