Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src



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 kib%freebsd.org@localhost.


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.




Home | Main Index | Thread Index | Old Index