Subject: CVS commit: src
To: None <source-changes@NetBSD.org>
From: Nick Hudson <skrll@netbsd.org>
List: source-changes
Date: 08/12/2003 09:18:52
Module Name:	src
Committed By:	skrll
Date:		Tue Aug 12 09:18:51 UTC 2003

Modified Files:
	src/lib/csu/common_elf: common.c common.h
	src/lib/libc/dlfcn: dlfcn_elf.c
	src/libexec/ld.elf_so: reloc.c rtld.c rtld.h search.c symbol.c
	src/usr.bin/ldd/ldd_elf: ldd.c
Removed Files:
	src/lib/libc/dlfcn: dlfcn_stubs.c

Log Message:
Resolve dlsym(3) and friends directly so that dlsym(RTLD_NEXT,...) works.

Previously dlsym resolved to the version in crt0.o or libc which would
mean that the caller's shared object couldn't be determined correctly
using __builtin_return_address(0).

Mainly from FreeBSD, but adapted by me. Benefits of this solutions are:

	- backward comptibility maintained
	- existing broken binaries are fixed with a new ld.elf_so
	- __mainprog_obj can be removed from crt0.o
	- we do the same thing as FreeBSD

Fixes PR 22067.

OKed by Jason and Christos.


To generate a diff of this commit:
cvs rdiff -r1.12 -r1.13 src/lib/csu/common_elf/common.c
cvs rdiff -r1.8 -r1.9 src/lib/csu/common_elf/common.h
cvs rdiff -r1.3 -r1.4 src/lib/libc/dlfcn/dlfcn_elf.c
cvs rdiff -r1.4 -r0 src/lib/libc/dlfcn/dlfcn_stubs.c
cvs rdiff -r1.80 -r1.81 src/libexec/ld.elf_so/reloc.c
cvs rdiff -r1.98 -r1.99 src/libexec/ld.elf_so/rtld.c
cvs rdiff -r1.69 -r1.70 src/libexec/ld.elf_so/rtld.h
cvs rdiff -r1.17 -r1.18 src/libexec/ld.elf_so/search.c
cvs rdiff -r1.32 -r1.33 src/libexec/ld.elf_so/symbol.c
cvs rdiff -r1.19 -r1.20 src/usr.bin/ldd/ldd_elf/ldd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.