Home | History | Annotate | only in /src/usr.bin/ldd
History log of /src/usr.bin/ldd
RevisionDateAuthorComments
 1.16 15-Apr-2011  plunky move the build of ldd binary to a subdir in order to allow
explict ordering. This makes "make all" work the same as
"make dependall"
 1.15 15-Dec-2009  mrg make this actually build on mips64.
 1.14 13-Dec-2009  mrg - adjust the logic for compat ldd: add an elf32_compat module and arrange
for mips64 to build this with MLIBDIR set to o32
- make mips64 ldd call elf32_compat_ldd as well
- make mips64 elf64 set MLIBDIR to 64
- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
soon anyway)

tested on amd64 and sparc64, and an earlier version tested on mips64.
 1.13 22-Aug-2009  mrg kill ldd_aout. it didn't work anyway...not since i don't know when.
 1.12 20-Aug-2009  he Um, the test for mips should use MACHINE_CPU, not MACHINE_ARCH.
 1.11 20-Aug-2009  he Don't include <a.out.h> unless it's needed, and don't build
the aout subdir if on mips. Fixes build for mips ports.
 1.10 14-Apr-2009  lukem Enable WARNS=4 by default for usr.bin, except for:
awk bdes checknr compile_et error gss hxtool kgetcred kinit
klist ldd less lex locale login m4 man menuc mk_cmds
mklocale msgc openssl rpcgen rpcinfo sdiff spell ssh
string2key telnet tn3270 verify_krb5_conf xlint
 1.9 07-Jan-2009  mrg branches: 1.9.2;
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
 1.8 06-Jan-2009  mrg - get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.7 15-Dec-1998  pk branches: 1.7.52;
Move a.out version of ldd(1) to the usr.bin tree; elf and a.out
reside in separate subdirectories (various source moved by
repository copying). Adapt Makefiles to new situation.
 1.6 19-Oct-1997  lukem don't define WARNS=1 here
 1.5 11-Oct-1997  christos CFLAGS->CPPFLAGS, and general cleanup; add WARNS
 1.4 08-May-1997  gwr Back out the .PATH.c changes. The .depend problem (and others)
will be fixed using the new .NOPATH make feature instead.
 1.3 06-May-1997  gwr Use .PATH.c: ...
 1.2 17-Dec-1996  jonathan Mipsel changes to ELF ldd/ld.so:
* don't abort() on NetBSD/pmax 1.1 elf binaries;
* Assume 32-bit elf unless compiling for Alpha;
* note bugs in ldd's README.
 1.1 16-Dec-1996  cgd First cut at an elf-aware ldd. Originally from John Polstra's FreeBSD elf
kit, then hacked on by Matt Thomas <matt@3am-software.com>, then by me.
This runs, but it's in serious need of cleaning and/or a fair bit of
reworking. See the README file for more information, and a list of things
to do.
 1.7.52.2 06-Jan-2011  riz Apply patch (requested by mrg in ticket #1499):

src/compat version 2. this allows building any number of alternate
library / program target ABIs. rather than duplicating the list of
subdirs and Makefiles to build, it re-traverses the necessary ones.
details:
- add support for MAKEDIRTARGETENV to share/mk
- renames LD32DIR to MLIBDIR
- fixes library builds for some subdirs (more was built than needed)
- fixes /bin & /sbin apps in compat mode
- reduces complexity in src/compat and the rest of the tree
- updates ldd netbsd32 support
 1.7.52.1 16-Jan-2009  bouyer branches: 1.7.52.1.4;
Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.7.52.1.4.3 23-Dec-2009  mrg pull across from -current:
> Log Message:
> - adjust the logic for compat ldd: add an elf32_compat module and arrange
> for mips64 to build this with MLIBDIR set to o32
> - make mips64 ldd call elf32_compat_ldd as well
> - make mips64 elf64 set MLIBDIR to 64
> - don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
> soon anyway)
>
> tested on amd64 and sparc64, and an earlier version tested on mips64.

> Log Message:
> make this actually build on mips64.
 1.7.52.1.4.2 05-Sep-2009  matt Fix build problems with CPUFLAGS.
 1.7.52.1.4.1 05-Sep-2009  matt If build a N64 userland, enable elf64 support in ldd.
 1.9.2.1 13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.4 20-Oct-2025  nat New port: mac68ksf - Macintosh 68k softfloat.

This commit is all the Makefile glue for the new port which is the mac68k
port with MKSOFTFLOAT set to "yes".

As posted here:
https://mail-index.netbsd.org/port-mac68k/2025/10/14/msg001037.html
 1.3 25-Apr-2013  matt If earm, include from lib/libexecinfo for unwind.h
 1.2 17-Feb-2012  matt branches: 1.2.2;
MIPS uses a variable page size now.
(pulled up from matt-nb5-mips64)
 1.1 06-Jan-2009  mrg branches: 1.1.2; 1.1.10;
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.1.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.1 17-Apr-2012  yamt sync with head
 1.1.2.2 16-Jan-2009  bouyer branches: 1.1.2.2.4;
Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.1.2.1 06-Jan-2009  bouyer file Makefile.common was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.1.2.2.4.2 19-Dec-2013  matt Match any arm
 1.1.2.2.4.1 17-Feb-2012  matt MIPS uses a variable page size now
 1.2.2.1 23-Jun-2013  tls resync from head
 1.6 04-Nov-2019  joerg PR 54093: Align static TLS area to max_align_t.
 1.5 07-May-2013  christos branches: 1.5.28; 1.5.30;
include symver.c
 1.4 09-Mar-2011  joerg branches: 1.4.4; 1.4.10;
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports
_rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to
setup the thread private area of all new threads. ld.elf_so is
responsible for setting up the private area for the initial thread.
Similar functions are called from _libc_init for static binaries, using
dl_iterate_phdr to access the ELF Program Header.

Add test cases to exercise the different TLS storage models. Test cases
are compiled and installed on all platforms, but are skipped on
platforms not marked for TLS support.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.

It is inspired by the TLS support in FreeBSD by Doug Rabson and the
clean ups of the DragonFly port of the original FreeBSD modifications.
 1.3 07-Jan-2009  mrg branches: 1.3.2;
make sure we set LIBISPRIVATE.

fixes build issues reported by moof.
 1.2 07-Jan-2009  mrg - rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
 1.1 06-Jan-2009  mrg - get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.3.2.2 16-Jan-2009  bouyer Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.3.2.1 07-Jan-2009  bouyer file Makefile.elf was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.4.10.1 23-Jun-2013  tls resync from head
 1.4.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.30.1 26-Nov-2019  martin Pull up following revision(s) (requested by nakayama in ticket #469):

lib/libc/tls/tls.c: revision 1.10
lib/libc/tls/tls.c: revision 1.11
lib/libc/tls/tls.c: revision 1.12
lib/libc/tls/tls.c: revision 1.13
libexec/ld.elf_so/tls.c: revision 1.13
libexec/ld.elf_so/tls.c: revision 1.14
libexec/ld.elf_so/Makefile: revision 1.142
lib/libc/tls/Makefile.inc: revision 1.3
usr.bin/ldd/Makefile.elf: revision 1.6

PR 54093: Align static TLS area to max_align_t.
Use alignof and not size_t for platforms with non-natural base
alignments.

Mirror the ld.elf_so logic for handling aligning the TLS size.
Most noticable, recompute the start of the TLS area for variant I
relative to the TCB. This makes a difference when the segment size and
base alignment don't agree.

Fix PR/54074 and PR/54093 completely.
More similar to the ld.elf_so logic, it is necessary to align with
p_align first. Also, invert the #ifdef condition for consistency.

Should fix regression for static linking binaries:
http://releng.netbsd.org/b5reports/sparc/commits-2019.11.html#2019.11.10.23.39.03
http://releng.netbsd.org/b5reports/sparc64/commits-2019.11.html#2019.11.16.04.10.33
 1.5.28.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8 25-Apr-2021  christos Handle mipsn64
 1.7 23-Jan-2016  christos Define _KERNTYPES for things that need it.
 1.6 13-Jun-2015  martin Do not set MLIBDIR if MKCOMPAT=no
 1.5 20-Mar-2013  macallan branches: 1.5.8;
apply kludge to make this more or less work on mips64 with n32 userland
with this ldd can handle both 64 and n32 binaries ( previously it would do 64
only ), o32 support is still broken
Someone more familiar with this code needs to fix this properly.
 1.4 15-Dec-2009  mrg branches: 1.4.6; 1.4.12;
make this actually build on mips64.
 1.3 13-Dec-2009  mrg - adjust the logic for compat ldd: add an elf32_compat module and arrange
for mips64 to build this with MLIBDIR set to o32
- make mips64 ldd call elf32_compat_ldd as well
- make mips64 elf64 set MLIBDIR to 64
- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
soon anyway)

tested on amd64 and sparc64, and an earlier version tested on mips64.
 1.2 14-Apr-2009  lukem Enable WARNS=4 by default for usr.bin, except for:
awk bdes checknr compile_et error gss hxtool kgetcred kinit
klist ldd less lex locale login m4 man menuc mk_cmds
mklocale msgc openssl rpcgen rpcinfo sdiff spell ssh
string2key telnet tn3270 verify_krb5_conf xlint
 1.1 15-Dec-1998  pk branches: 1.1.54; 1.1.58;
Move a.out version of ldd(1) to the usr.bin tree; elf and a.out
reside in separate subdirectories (various source moved by
repository copying). Adapt Makefiles to new situation.
 1.1.58.1 23-Dec-2009  mrg pull across from -current:
> Log Message:
> - adjust the logic for compat ldd: add an elf32_compat module and arrange
> for mips64 to build this with MLIBDIR set to o32
> - make mips64 ldd call elf32_compat_ldd as well
> - make mips64 elf64 set MLIBDIR to 64
> - don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
> soon anyway)
>
> tested on amd64 and sparc64, and an earlier version tested on mips64.

> Log Message:
> make this actually build on mips64.
 1.1.54.1 13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.4.12.1 23-Jun-2013  tls resync from head
 1.4.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.8.1 29-Jun-2015  snj Pull up following revision(s) (requested by roy in ticket #853):
usr.bin/ldd/Makefile.inc: revision 1.6
Do not set MLIBDIR if MKCOMPAT=no
 1.3 15-Dec-1998  pk Move a.out version of ldd(1) to the usr.bin tree; elf and a.out
reside in separate subdirectories (various source moved by
repository copying). Adapt Makefiles to new situation.
 1.2 17-Dec-1996  jonathan Mipsel changes to ELF ldd/ld.so:
* don't abort() on NetBSD/pmax 1.1 elf binaries;
* Assume 32-bit elf unless compiling for Alpha;
* note bugs in ldd's README.
 1.1 16-Dec-1996  cgd First cut at an elf-aware ldd. Originally from John Polstra's FreeBSD elf
kit, then hacked on by Matt Thomas <matt@3am-software.com>, then by me.
This runs, but it's in serious need of cleaning and/or a fair bit of
reworking. See the README file for more information, and a list of things
to do.
 1.1 07-Jan-2009  mrg branches: 1.1.2;
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
 1.1.2.2 16-Jan-2009  bouyer Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.1.2.1 07-Jan-2009  bouyer file dummy.c was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.27 01-Feb-2025  kre Better wording, s/working path/working directory/
(also minor input reformatting for easier searching)
 1.26 01-Feb-2025  christos correct explanation of %a
 1.25 01-Feb-2025  kre Minor typo corrected (s/rhe/the/)
 1.24 01-Feb-2025  christos Clarify how the main object pathname is set.
 1.23 01-Feb-2025  uwe ldd(1): brush up markup, g/c more of a.out

Now the only remaining a.out reference is %n.
Ride the date bump.
 1.22 31-Jan-2025  christos update %a description (it was wrong before; it was never __progname).
 1.21 15-Oct-2022  mrg branches: 1.21.4;
ldd(1): add a -v option to display all errors not just the latest.

ldd on a go binary currently fails with an error that basically
says "not elf32 class". this is a true statement, as it is an
elf64 class object, but it's not useful. it happens because
ldd_elf64() is called, fails in _rtld_map_object(), and then
ldd_elf32() is called, and it fails because the class is wrong,
and only this error is returned. (this problem remains. the
call to map the object fails due to there being 3 instead of 2
elf segments in the file. i guess we need similar code in
ld.elf_so/map_objects.c as the kernel gained some time ago.)

perhaps the first error, not the last error, should be used if
everything fails, but this allows all failures to be see and
would be useful even if the error string handling changed.
 1.20 25-Dec-2017  maya Return a non-zero (one) exit code on failure for one of the files

But keep on processing them, like ls, rm, and other programs do
 1.19 03-Jul-2017  wiz Remove workaround for ancient HTML generation code.
 1.18 07-Sep-2009  wiz New sentence, new line.
 1.17 07-Sep-2009  dholland Add an -o option that behaves like nm -o. Implementation from a suggestion
by jmcneill (thanks!); ok mrg. Closes PR 41994.
 1.16 23-Aug-2009  wiz Add missing word and bump date for previous.
 1.15 22-Aug-2009  mrg kill ldd_aout. it didn't work anyway...not since i don't know when.
 1.14 30-Apr-2008  martin Convert TNF licenses to new 2 clause variant
 1.13 23-May-2004  skrll branches: 1.13.26;
Bump the date.
 1.12 23-May-2004  skrll Implement %x for ELF.
 1.11 14-May-2004  wiz \*[Gt] instead of >; sort SEE ALSO.
 1.10 14-May-2004  christos Document and implement -f for elf objects.
 1.9 24-Apr-2003  wiz Sort sections, sort SEE ALSO, bump date for last.
 1.8 19-Apr-2003  christos PR/3046: Chris G. Demetriou: ldd actually runs target programs.
This is the case only with a.out programs, and the manual page has been
changed to reflect that in the BUGS section. Since most our architectures
have been converted to elf, this is not an issue anymore.
 1.7 31-Mar-2003  perry depedencies->dependencies (Igor Sobrado, PR misc/19700) + recognised->recognized
 1.6 20-Dec-2001  thorpej xref ld.elf_so(1)
 1.5 22-Mar-1999  garbled More and more .Os cleanups. .Os is defined in the tmac.doc-common file,
so we shouldn't override it with versions in the manpages. Many more to
come.
 1.4 05-Sep-1998  pk Assign my copyrights to TNF.
 1.3 28-Apr-1998  fair Principally, change foo(N) to .Xr foo N
Also, do some other mdoc tagging.
 1.2 08-Oct-1995  pk Add -f option for customized output.
 1.1 22-Oct-1993  pk ldd: list shared library dependencies.
 1.13.26.1 18-May-2008  yamt sync with head.
 1.21.4.1 02-Aug-2025  perseant Sync with HEAD
 1.28 04-Jan-2023  mrg avoid printing the latest error message if some ldd method worked.
 1.27 18-Oct-2022  mrg branches: 1.27.2;
only try the other methods if the previous ones failed.

fixes problem reported by ryoon@
 1.26 15-Oct-2022  mrg ldd(1): add a -v option to display all errors not just the latest.

ldd on a go binary currently fails with an error that basically
says "not elf32 class". this is a true statement, as it is an
elf64 class object, but it's not useful. it happens because
ldd_elf64() is called, fails in _rtld_map_object(), and then
ldd_elf32() is called, and it fails because the class is wrong,
and only this error is returned. (this problem remains. the
call to map the object fails due to there being 3 instead of 2
elf segments in the file. i guess we need similar code in
ld.elf_so/map_objects.c as the kernel gained some time ago.)

perhaps the first error, not the last error, should be used if
everything fails, but this allows all failures to be see and
would be useful even if the error string handling changed.
 1.25 23-Jul-2021  martin gcc hates strncpy()
 1.24 22-Jul-2021  christos rtld expects an absolute path in execname provided via AUXV in order to
handle $ORIGIN properly and checks for that. Since we are calling its guts
directly, provide one.
 1.23 25-Dec-2017  maya Return a non-zero (one) exit code on failure for one of the files

But keep on processing them, like ls, rm, and other programs do
 1.22 02-Mar-2014  matt Use OBJECT_FMTS from <bsd.own.mk> to determine elf32/elf64 needs
 1.21 20-Mar-2013  macallan apply kludge to make this more or less work on mips64 with n32 userland
with this ldd can handle both 64 and n32 binaries ( previously it would do 64
only ), o32 support is still broken
Someone more familiar with this code needs to fix this properly.
 1.20 08-Jul-2012  matt branches: 1.20.2;
Make sure stuff using Obj_Entry is compiled correctly for ELF32 or ELF64.
 1.19 24-May-2011  joerg branches: 1.19.4;
Fix sign compare
 1.18 29-Mar-2011  joerg Block signals when using the exclusive lock.
 1.17 25-Mar-2011  joerg Add basic locking to ld.elf_so.
 1.16 09-Mar-2011  joerg Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports
_rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to
setup the thread private area of all new threads. ld.elf_so is
responsible for setting up the private area for the initial thread.
Similar functions are called from _libc_init for static binaries, using
dl_iterate_phdr to access the ELF Program Header.

Add test cases to exercise the different TLS storage models. Test cases
are compiled and installed on all platforms, but are skipped on
platforms not marked for TLS support.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.

It is inspired by the TLS support in FreeBSD by Doug Rabson and the
clean ups of the DragonFly port of the original FreeBSD modifications.
 1.15 16-Oct-2010  skrll Implement dl_iterate_phdr.

Somewhat taken from FreeBSD. Manual page from OpenBSD.
 1.14 27-Feb-2010  roy Sync against new ld.elf_so
 1.13 23-Feb-2010  skrll Mark each object as printed as visited and then print.

Fixes PR/42811.

As a side effect the libraries are printed in, imo, a better order.
 1.12 13-Dec-2009  mrg - adjust the logic for compat ldd: add an elf32_compat module and arrange
for mips64 to build this with MLIBDIR set to o32
- make mips64 ldd call elf32_compat_ldd as well
- make mips64 elf64 set MLIBDIR to 64
- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
soon anyway)

tested on amd64 and sparc64, and an earlier version tested on mips64.
 1.11 17-Nov-2009  skrll Make _rtld_pagesz of type size_t.

Fixes round_down for alpha which made ldd(1) break.
 1.10 07-Sep-2009  dholland Add an -o option that behaves like nm -o. Implementation from a suggestion
by jmcneill (thanks!); ok mrg. Closes PR 41994.
 1.9 22-Aug-2009  mrg kill ldd_aout. it didn't work anyway...not since i don't know when.
 1.8 20-Aug-2009  he Don't try to call the (no longer defined) aout_ldd() function
if we're building for mips.
 1.7 20-Aug-2009  he Don't include <a.out.h> unless it's needed, and don't build
the aout subdir if on mips. Fixes build for mips ports.
 1.6 20-May-2009  christos catch up with rtld changes
 1.5 03-Feb-2009  mrg rework the main loop and handlers:
- open() and close() the file in the main loop
- pass the fd down into the handlers
- use _rtld_error() in ELFNAME(ldd)

this fixes PR#40543 and also makes error messages look better.
 1.4 07-Jan-2009  mrg - rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
 1.3 06-Jan-2009  mrg - get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.2 15-Dec-1998  pk branches: 1.2.12;
Move a.out version of ldd(1) to the usr.bin tree; elf and a.out
reside in separate subdirectories (various source moved by
repository copying). Adapt Makefiles to new situation.
 1.1 16-Dec-1996  cgd First cut at an elf-aware ldd. Originally from John Polstra's FreeBSD elf
kit, then hacked on by Matt Thomas <matt@3am-software.com>, then by me.
This runs, but it's in serious need of cleaning and/or a fair bit of
reworking. See the README file for more information, and a list of things
to do.
 1.2.12.4 17-Mar-2012  bouyer Pull up following revision(s) via patch (requested by skrll in ticket #1724):
rescue/list.ldd: revision 1.4
lib/libc/dlfcn/dlfcn_elf.c: revision 1.7
libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.57
distrib/sets/lists/comp/mi: revision 1.1512
share/man/man3/Makefile: revision 1.56
libexec/ld.elf_so/arch/mips/mips_reloc.c: revision 1.58
usr.bin/ldd/ldd.c: revision 1.15
libexec/ld.elf_so/rtld.h: revision 1.84
share/man/man3/dl_iterate_phdr.3: revision 1.1
libexec/ld.elf_so/rtld.c: revision 1.129
libexec/ld.elf_so/arch/powerpc/ppc_reloc.c: revision 1.44
libexec/ld.elf_so/rtld.h: revision 1.89
libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.36
libexec/ld.elf_so/map_object.c: revision 1.41
libexec/ld.elf_so/arch/x86_64/mdreloc.c: revision 1.37
libexec/ld.elf_so/arch/sparc64/mdreloc.c: revision 1.46
include/link_elf.h: revision 1.10
libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.29
libexec/ld.elf_so/arch/vax/mdreloc.c: revision 1.26
libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.34
libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.31
libexec/ld.elf_so/arch/alpha/alpha_reloc.c: revision 1.35
libexec/ld.elf_so/Makefile: revision 1.94
libexec/ld.elf_so/arch/hppa/hppa_reloc.c: revision 1.32
libexec/ld.elf_so/Makefile: revision 1.95
libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.31
libexec/ld.elf_so/Makefile: revision 1.96
libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.32
libexec/ld.elf_so/reloc.c: revision 1.98
libexec/ld.elf_so/arch/arm/mdreloc.c: revision 1.33
sys/sys/exec_elf.h: revision 1.106
libexec/ld.elf_so/rtld.c: revision 1.130
libexec/ld.elf_so/load.c: revision 1.37
libexec/ld.elf_so/rtld.c: revision 1.131
libexec/ld.elf_so/load.c: revision 1.38
libexec/ld.elf_so/rtld.h: revision 1.90
libexec/ld.elf_so/headers.c: revision 1.36
libexec/ld.elf_so/rtld.h: revision 1.95
libexec/ld.elf_so/arch/i386/mdreloc.c: revision 1.30
libexec/ld.elf_so/arch/m68k/mdreloc.c: revision 1.25
libexec/ld.elf_so/symbol.c: revision 1.50
libexec/ld.elf_so/symbol.c: revision 1.51
libexec/ld.elf_so/arch/sparc/mdreloc.c: revision 1.43
libexec/ld.elf_so/symbol.c: revision 1.52
libexec/ld.elf_so/arch/sh3/mdreloc.c: revision 1.27
libexec/ld.elf_so/symbol.c: revision 1.54
PR/39240: Satoshi Suetake: Don't fail when attempting to resolve weak symbols
when we are doing immediate binding, leave them alone and they will be dealt
with later during lazy binding. From skrll@
Implement negative cache checks for symbol lookups.
Uses the Donelist idea from FreeBSD.
Use alloca(3) instead of local xmalloc for creating our DoneLists.
This allows threaded programs to use us a little better, PR lib/43005.
Implement dl_iterate_phdr.
Somewhat taken from FreeBSD. Manual page from OpenBSD.
 1.2.12.3 06-Mar-2010  sborrill Pull up the following revisions(s) (requested by skrll in ticket #1318):
usr.bin/ldd/ldd.c: revision 1.13

Mark each object as printed as visited and then print. Fixes PR/42811.
Improve print order.
 1.2.12.2 25-Feb-2009  snj branches: 1.2.12.2.4;
Pull up following revision(s) (requested by mrg in ticket #483):
usr.bin/ldd/ldd.c: revision 1.5
usr.bin/ldd/ldd.h: revision 1.2
usr.bin/ldd/ldd_aout.c: revision 1.3
usr.bin/ldd/ldd_elfxx.c: revision 1.2
rework the main loop and handlers:
- - open() and close() the file in the main loop
- - pass the fd down into the handlers
- - use _rtld_error() in ELFNAME(ldd)
this fixes PR#40543 and also makes error messages look better.
 1.2.12.1 16-Jan-2009  bouyer Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.2.12.2.4.3 17-Feb-2012  matt Move fmtprint and print_needed since they are dependent on ELFSIZE.
 1.2.12.2.4.2 21-Apr-2010  matt sync to netbsd-5
 1.2.12.2.4.1 23-Dec-2009  mrg pull across from -current:
> Log Message:
> - adjust the logic for compat ldd: add an elf32_compat module and arrange
> for mips64 to build this with MLIBDIR set to o32
> - make mips64 ldd call elf32_compat_ldd as well
> - make mips64 elf64 set MLIBDIR to 64
> - don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
> soon anyway)
>
> tested on amd64 and sparc64, and an earlier version tested on mips64.

> Log Message:
> make this actually build on mips64.
 1.19.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.19.4.1 30-Oct-2012  yamt sync with head
 1.20.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.20.2.1 23-Jun-2013  tls resync from head
 1.27.2.1 12-Jan-2023  martin Pull up following revision(s) (requested by mrg in ticket #41):

usr.bin/ldd/ldd.c: revision 1.28

avoid printing the latest error message if some ldd method worked.
 1.9 11-Dec-2021  mrg remove clause 3 from all my licenses that aren't conflicting with
another copyright claim line. again. (i did this in 2008 and then
did not update all of my personal templates.)
 1.8 22-Jul-2021  christos rtld expects an absolute path in execname provided via AUXV in order to
handle $ORIGIN properly and checks for that. Since we are calling its guts
directly, provide one.
 1.7 08-Jul-2012  matt Make sure stuff using Obj_Entry is compiled correctly for ELF32 or ELF64.
 1.6 15-Dec-2009  mrg branches: 1.6.6;
make this actually build on mips64.
 1.5 13-Dec-2009  mrg - adjust the logic for compat ldd: add an elf32_compat module and arrange
for mips64 to build this with MLIBDIR set to o32
- make mips64 ldd call elf32_compat_ldd as well
- make mips64 elf64 set MLIBDIR to 64
- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
soon anyway)

tested on amd64 and sparc64, and an earlier version tested on mips64.
 1.4 07-Sep-2009  dholland Sprinkle a little const. no object diffs
 1.3 22-Aug-2009  mrg kill ldd_aout. it didn't work anyway...not since i don't know when.
 1.2 03-Feb-2009  mrg rework the main loop and handlers:
- open() and close() the file in the main loop
- pass the fd down into the handlers
- use _rtld_error() in ELFNAME(ldd)

this fixes PR#40543 and also makes error messages look better.
 1.1 06-Jan-2009  mrg branches: 1.1.2;
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.1.2.4 06-Jan-2011  riz Apply patch (requested by mrg in ticket #1499):

src/compat version 2. this allows building any number of alternate
library / program target ABIs. rather than duplicating the list of
subdirs and Makefiles to build, it re-traverses the necessary ones.
details:
- add support for MAKEDIRTARGETENV to share/mk
- renames LD32DIR to MLIBDIR
- fixes library builds for some subdirs (more was built than needed)
- fixes /bin & /sbin apps in compat mode
- reduces complexity in src/compat and the rest of the tree
- updates ldd netbsd32 support
 1.1.2.3 25-Feb-2009  snj branches: 1.1.2.3.4;
Pull up following revision(s) (requested by mrg in ticket #483):
usr.bin/ldd/ldd.c: revision 1.5
usr.bin/ldd/ldd.h: revision 1.2
usr.bin/ldd/ldd_aout.c: revision 1.3
usr.bin/ldd/ldd_elfxx.c: revision 1.2
rework the main loop and handlers:
- - open() and close() the file in the main loop
- - pass the fd down into the handlers
- - use _rtld_error() in ELFNAME(ldd)
this fixes PR#40543 and also makes error messages look better.
 1.1.2.2 16-Jan-2009  bouyer Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.1.2.1 06-Jan-2009  bouyer file ldd.h was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.1.2.3.4.2 17-Feb-2012  matt Move fmtprint and print_needed since they are dependent on ELFSIZE.
 1.1.2.3.4.1 23-Dec-2009  mrg pull across from -current:
> Log Message:
> - adjust the logic for compat ldd: add an elf32_compat module and arrange
> for mips64 to build this with MLIBDIR set to o32
> - make mips64 ldd call elf32_compat_ldd as well
> - make mips64 elf64 set MLIBDIR to 64
> - don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
> soon anyway)
>
> tested on amd64 and sparc64, and an earlier version tested on mips64.

> Log Message:
> make this actually build on mips64.
 1.6.6.1 30-Oct-2012  yamt sync with head
 1.5 22-Aug-2009  mrg kill ldd_aout. it didn't work anyway...not since i don't know when.
 1.4 16-Aug-2009  martin More missing <sys/exec_aout.h>
 1.3 03-Feb-2009  mrg rework the main loop and handlers:
- open() and close() the file in the main loop
- pass the fd down into the handlers
- use _rtld_error() in ELFNAME(ldd)

this fixes PR#40543 and also makes error messages look better.
 1.2 11-Jan-2009  mrg branches: 1.2.2;
pull across the struct netbsd32_exec definition and use that in all
cases, since we never did 64 bit a.out. now ldd on 32 bit a.out
at least tries to work, but fails (on sparc or sparc64, no idea yet
for x86) the same way that all dynamic a.out binaries fail.
 1.1 06-Jan-2009  mrg - get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.2.2.4 25-Feb-2009  snj Pull up following revision(s) (requested by mrg in ticket #483):
usr.bin/ldd/ldd.c: revision 1.5
usr.bin/ldd/ldd.h: revision 1.2
usr.bin/ldd/ldd_aout.c: revision 1.3
usr.bin/ldd/ldd_elfxx.c: revision 1.2
rework the main loop and handlers:
- - open() and close() the file in the main loop
- - pass the fd down into the handlers
- - use _rtld_error() in ELFNAME(ldd)
this fixes PR#40543 and also makes error messages look better.
 1.2.2.3 25-Feb-2009  snj Pull up following revision(s) (requested by mrg in ticket #483):
usr.bin/ldd/ldd_aout.c: revision 1.2
pull across the struct netbsd32_exec definition and use that in all
cases, since we never did 64 bit a.out. now ldd on 32 bit a.out
at least tries to work, but fails (on sparc or sparc64, no idea yet
for x86) the same way that all dynamic a.out binaries fail.
 1.2.2.2 16-Jan-2009  bouyer Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.2.2.1 11-Jan-2009  bouyer file ldd_aout.c was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.8 22-Jul-2021  christos rtld expects an absolute path in execname provided via AUXV in order to
handle $ORIGIN properly and checks for that. Since we are calling its guts
directly, provide one.
 1.7 10-Jan-2017  christos need <sys/stat.h>
 1.6 08-Jul-2012  matt branches: 1.6.14;
Make sure stuff using Obj_Entry is compiled correctly for ELF32 or ELF64.
 1.5 30-Jun-2011  wiz branches: 1.5.2;
dependant -> dependent
 1.4 07-Sep-2009  dholland Sprinkle a little const. no object diffs
 1.3 20-Aug-2009  he Don't include <a.out.h> unless it's needed, and don't build
the aout subdir if on mips. Fixes build for mips ports.
 1.2 03-Feb-2009  mrg rework the main loop and handlers:
- open() and close() the file in the main loop
- pass the fd down into the handlers
- use _rtld_error() in ELFNAME(ldd)

this fixes PR#40543 and also makes error messages look better.
 1.1 06-Jan-2009  mrg branches: 1.1.2;
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.1.2.3 25-Feb-2009  snj branches: 1.1.2.3.4;
Pull up following revision(s) (requested by mrg in ticket #483):
usr.bin/ldd/ldd.c: revision 1.5
usr.bin/ldd/ldd.h: revision 1.2
usr.bin/ldd/ldd_aout.c: revision 1.3
usr.bin/ldd/ldd_elfxx.c: revision 1.2
rework the main loop and handlers:
- - open() and close() the file in the main loop
- - pass the fd down into the handlers
- - use _rtld_error() in ELFNAME(ldd)
this fixes PR#40543 and also makes error messages look better.
 1.1.2.2 16-Jan-2009  bouyer Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.1.2.1 06-Jan-2009  bouyer file ldd_elfxx.c was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.1.2.3.4.1 17-Feb-2012  matt Move fmtprint and print_needed since they are dependent on ELFSIZE.
 1.5.2.1 30-Oct-2012  yamt sync with head
 1.6.14.1 20-Mar-2017  pgoyette Sync with HEAD
 1.7 25-Apr-2021  christos Handle mipsn64
 1.6 04-Feb-2019  mrg don't build ldd64 support if !MKCOMPAT and mips64.
 1.5 27-Jan-2019  kre Fix merge botch
 1.4 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.3 21-Jun-2018  kamil branches: 1.3.2;
Disable SANITIZER for ldd(1)

These utilities (elf32, elf32_compat, elf64, liblldb) share code with the
ELF dynamic loader that is not being sanitized and its symbols are
installed into sanitized programs (in particular __tls_get_addr()).

Additionally libldd is used in rescue that is not expected to be sanitized
as of today.
 1.2 02-Mar-2014  matt branches: 1.2.24;
Use OBJECT_FMTS from <bsd.own.mk> to determine elf32/elf64 needs
 1.1 15-Apr-2011  plunky branches: 1.1.4; 1.1.10;
move the build of ldd binary to a subdir in order to allow
explict ordering. This makes "make all" work the same as
"make dependall"
 1.1.10.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.24.1 25-Jun-2018  pgoyette Sync with HEAD
 1.3.2.1 10-Jun-2019  christos Sync with HEAD
 1.12 27-Jan-2019  kre Fix merge botch
 1.11 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.10 21-Jun-2018  kamil branches: 1.10.2;
Disable SANITIZER for ldd(1)

These utilities (elf32, elf32_compat, elf64, liblldb) share code with the
ELF dynamic loader that is not being sanitized and its symbols are
installed into sanitized programs (in particular __tls_get_addr()).

Additionally libldd is used in rescue that is not expected to be sanitized
as of today.
 1.9 02-Mar-2014  matt branches: 1.9.24;
Use OBJECT_FMTS from <bsd.own.mk> to determine elf32/elf64 needs
 1.8 09-Mar-2011  joerg branches: 1.8.4; 1.8.10;
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports
_rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to
setup the thread private area of all new threads. ld.elf_so is
responsible for setting up the private area for the initial thread.
Similar functions are called from _libc_init for static binaries, using
dl_iterate_phdr to access the ELF Program Header.

Add test cases to exercise the different TLS storage models. Test cases
are compiled and installed on all platforms, but are skipped on
platforms not marked for TLS support.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.

It is inspired by the TLS support in FreeBSD by Doug Rabson and the
clean ups of the DragonFly port of the original FreeBSD modifications.
 1.7 13-Dec-2009  mrg - adjust the logic for compat ldd: add an elf32_compat module and arrange
for mips64 to build this with MLIBDIR set to o32
- make mips64 ldd call elf32_compat_ldd as well
- make mips64 elf64 set MLIBDIR to 64
- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
soon anyway)

tested on amd64 and sparc64, and an earlier version tested on mips64.
 1.6 14-Feb-2009  abs Convert more MACHINE tests to MACHINE_ARCH
 1.5 20-Jan-2009  tron branches: 1.5.2;
Include "bsd.own.mk" to get the definition of "NETBSDSRCDIR" via
"/etc/mk.conf". This fixes manual use of "make cleandir".
 1.4 11-Jan-2009  christos branches: 1.4.2;
need bsd.own.mk for $NETBSDSRCDIR
 1.3 07-Jan-2009  mrg make sure we set LIBISPRIVATE.

fixes build issues reported by moof.
 1.2 07-Jan-2009  mrg - rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
 1.1 06-Jan-2009  mrg - get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.4.2.4 06-Jan-2011  riz Apply patch (requested by mrg in ticket #1499):

src/compat version 2. this allows building any number of alternate
library / program target ABIs. rather than duplicating the list of
subdirs and Makefiles to build, it re-traverses the necessary ones.
details:
- add support for MAKEDIRTARGETENV to share/mk
- renames LD32DIR to MLIBDIR
- fixes library builds for some subdirs (more was built than needed)
- fixes /bin & /sbin apps in compat mode
- reduces complexity in src/compat and the rest of the tree
- updates ldd netbsd32 support
 1.4.2.3 22-Jan-2009  snj Pull up following revision(s) (requested by tron in ticket #304):
compat/external/bsd/openldap/lib/Makefile: revision 1.3
compat/gnu/lib/Makefile: revision 1.3
compat/gnu/lib/libgcc4/Makefile: revision 1.3
compat/lib/Makefile: revision 1.3
compat/lib/i18n_module/Makefile: revision 1.3
compat/lib/libpam/modules/Makefile: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.5
Include "bsd.own.mk" to get the definition of "NETBSDSRCDIR" via
"/etc/mk.conf". This fixes manual use of "make cleandir".
 1.4.2.2 16-Jan-2009  bouyer Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.4.2.1 11-Jan-2009  bouyer file Makefile was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.5.2.1 13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.8.10.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.24.1 25-Jun-2018  pgoyette Sync with HEAD
 1.10.2.1 10-Jun-2019  christos Sync with HEAD
 1.4 27-Jan-2019  kre Fix merge botch
 1.3 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.2 21-Jun-2018  kamil branches: 1.2.2;
Disable SANITIZER for ldd(1)

These utilities (elf32, elf32_compat, elf64, liblldb) share code with the
ELF dynamic loader that is not being sanitized and its symbols are
installed into sanitized programs (in particular __tls_get_addr()).

Additionally libldd is used in rescue that is not expected to be sanitized
as of today.
 1.1 13-Dec-2009  mrg branches: 1.1.2; 1.1.4; 1.1.48;
- adjust the logic for compat ldd: add an elf32_compat module and arrange
for mips64 to build this with MLIBDIR set to o32
- make mips64 ldd call elf32_compat_ldd as well
- make mips64 elf64 set MLIBDIR to 64
- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
soon anyway)

tested on amd64 and sparc64, and an earlier version tested on mips64.
 1.1.48.1 25-Jun-2018  pgoyette Sync with HEAD
 1.1.4.2 06-Jan-2011  riz Apply patch (requested by mrg in ticket #1499):

src/compat version 2. this allows building any number of alternate
library / program target ABIs. rather than duplicating the list of
subdirs and Makefiles to build, it re-traverses the necessary ones.
details:
- add support for MAKEDIRTARGETENV to share/mk
- renames LD32DIR to MLIBDIR
- fixes library builds for some subdirs (more was built than needed)
- fixes /bin & /sbin apps in compat mode
- reduces complexity in src/compat and the rest of the tree
- updates ldd netbsd32 support
 1.1.4.1 13-Dec-2009  riz file Makefile was added on branch netbsd-5 on 2011-01-06 05:20:26 +0000
 1.1.2.2 23-Dec-2009  mrg pull across from -current:
> Log Message:
> - adjust the logic for compat ldd: add an elf32_compat module and arrange
> for mips64 to build this with MLIBDIR set to o32
> - make mips64 ldd call elf32_compat_ldd as well
> - make mips64 elf64 set MLIBDIR to 64
> - don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
> soon anyway)
>
> tested on amd64 and sparc64, and an earlier version tested on mips64.

> Log Message:
> make this actually build on mips64.
 1.1.2.1 13-Dec-2009  mrg file Makefile was added on branch matt-nb5-mips64 on 2009-12-23 03:14:47 +0000
 1.2.2.1 10-Jun-2019  christos Sync with HEAD
 1.13 25-Apr-2021  christos Handle mipsn64
 1.12 04-Feb-2019  mrg don't build ldd64 support if !MKCOMPAT and mips64.
 1.11 27-Jan-2019  kre Fix merge botch
 1.10 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.9 21-Jun-2018  kamil branches: 1.9.2;
Disable SANITIZER for ldd(1)

These utilities (elf32, elf32_compat, elf64, liblldb) share code with the
ELF dynamic loader that is not being sanitized and its symbols are
installed into sanitized programs (in particular __tls_get_addr()).

Additionally libldd is used in rescue that is not expected to be sanitized
as of today.
 1.8 28-Aug-2014  joerg branches: 1.8.14;
Fix ldd on LP64 platforms by splitting the symbol versioning stuff for
elf64 as well.
 1.7 02-Mar-2014  matt branches: 1.7.4;
Use OBJECT_FMTS from <bsd.own.mk> to determine elf32/elf64 needs
 1.6 09-Mar-2011  joerg branches: 1.6.4; 1.6.10;
Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports
_rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to
setup the thread private area of all new threads. ld.elf_so is
responsible for setting up the private area for the initial thread.
Similar functions are called from _libc_init for static binaries, using
dl_iterate_phdr to access the ELF Program Header.

Add test cases to exercise the different TLS storage models. Test cases
are compiled and installed on all platforms, but are skipped on
platforms not marked for TLS support.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.

It is inspired by the TLS support in FreeBSD by Doug Rabson and the
clean ups of the DragonFly port of the original FreeBSD modifications.
 1.5 13-Dec-2009  mrg - adjust the logic for compat ldd: add an elf32_compat module and arrange
for mips64 to build this with MLIBDIR set to o32
- make mips64 ldd call elf32_compat_ldd as well
- make mips64 elf64 set MLIBDIR to 64
- don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
soon anyway)

tested on amd64 and sparc64, and an earlier version tested on mips64.
 1.4 11-Jan-2009  christos branches: 1.4.2;
another bsd.own.mk missing
 1.3 07-Jan-2009  mrg make sure we set LIBISPRIVATE.

fixes build issues reported by moof.
 1.2 07-Jan-2009  mrg - rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
 1.1 06-Jan-2009  mrg - get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)

- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().


now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
 1.4.2.4 07-Jan-2011  riz Pull up following revision(s) (requested by veego in ticket #1499):
usr.bin/ldd/elf64/Makefile: revision 1.4
another bsd.own.mk missing
 1.4.2.3 06-Jan-2011  riz Apply patch (requested by mrg in ticket #1499):

src/compat version 2. this allows building any number of alternate
library / program target ABIs. rather than duplicating the list of
subdirs and Makefiles to build, it re-traverses the necessary ones.
details:
- add support for MAKEDIRTARGETENV to share/mk
- renames LD32DIR to MLIBDIR
- fixes library builds for some subdirs (more was built than needed)
- fixes /bin & /sbin apps in compat mode
- reduces complexity in src/compat and the rest of the tree
- updates ldd netbsd32 support
 1.4.2.2 16-Jan-2009  bouyer branches: 1.4.2.2.4;
Pull up following revision(s) (requested by mrg in ticket #265):
libexec/ld.elf_so/headers.c: revision 1.27
rescue/list: revision 1.35
libexec/ld.elf_so/arch/sparc/Makefile.ld32: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.1
usr.bin/ldd/Makefile.elf: revision 1.2
usr.bin/ldd/ldd_aout/ldd.c: file removal
usr.bin/ldd/Makefile.elf: revision 1.3
libexec/ld.elf_so/arch/sparc/Makefile.inc: revision 1.12
usr.bin/ldd/dummy.c: revision 1.1
gnu/usr.bin/binutils/ld/Makefile: revision 1.28
usr.bin/ldd/elf32/Makefile: revision 1.1
usr.bin/ldd/elf32/Makefile: revision 1.2
usr.bin/ldd/ldd.c: revision 1.3
usr.bin/ldd/elf32/Makefile: revision 1.3
usr.bin/ldd/ldd_elf/Makefile: file removal
usr.bin/ldd/ldd.h: revision 1.1
usr.bin/ldd/ldd.c: revision 1.4
usr.bin/ldd/ldd_aout.c: revision 1.1
usr.bin/ldd/Makefile: revision 1.8
usr.bin/ldd/Makefile: revision 1.9
usr.bin/ldd/ldd_elfxx.c: revision 1.1
libexec/ld.elf_so/map_object.c: revision 1.37
usr.bin/ldd/ldd_aout/Makefile: file removal
usr.bin/ldd/elf64/Makefile: revision 1.1
rescue/Makefile: revision 1.22
libexec/ld.elf_so/arch/i386/Makefile.ld32: revision 1.1
usr.bin/ldd/ldd_elf/ldd.c: file removal
usr.bin/ldd/elf64/Makefile: revision 1.2
usr.bin/ldd/elf64/Makefile: revision 1.3
usr.bin/ldd/aout/Makefile: revision 1.1
libexec/ld.elf_so/arch/i386/Makefile.inc: revision 1.12
rescue/list.ldd: revision 1.1
usr.bin/ldd/ldd_elf/README: file removal
usr.bin/ldd/Makefile.common: revision 1.1
move the defines for RTLD_ARCH_SUBDIR into a sub-sub-makefile so we can
grab these values via reach-over more easily.
some fixes for PR#40170:
- set NATIVE=yes in the environment for genscripts.sh
- set LIB_PATH to /usr/lib/{sparc,i386} for those scripts
- set use_sysroot to "yes", to enable LIB_PATH to work in genscripts.sh
- get rid of building an a.out-happy ldd (but keep supporting a.out
binaries for the ELF version.)
- convert a.out, elf32 and elf64 support into convience libraries and
link them right ones in. if elf_ldd() fails on 64 bit platforms,
try elf32_ldd() before aout_ldd().
now ldd on 64 bit platforms works for 32 bit binaries, aka PR#40199,
and it seems that all the issues from README are gone too.
add some (uintptr_t) to some casts, so these compile with ELFSIZE=32
*and _LP64. necessary for 32/64 bit combo ldd support.
- rework this a bunch to make it work inside /rescue/ldd.
- fix alpha build.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
make sure we set LIBISPRIVATE.
fixes build issues reported by moof.
 1.4.2.1 11-Jan-2009  bouyer file Makefile was added on branch netbsd-5 on 2009-01-16 22:21:30 +0000
 1.4.2.2.4.3 23-Dec-2009  mrg pull across from -current:
> Log Message:
> - adjust the logic for compat ldd: add an elf32_compat module and arrange
> for mips64 to build this with MLIBDIR set to o32
> - make mips64 ldd call elf32_compat_ldd as well
> - make mips64 elf64 set MLIBDIR to 64
> - don't need ld.elf_so's Makefile.ld32 files anymore (they are going away
> soon anyway)
>
> tested on amd64 and sparc64, and an earlier version tested on mips64.

> Log Message:
> make this actually build on mips64.
 1.4.2.2.4.2 05-Sep-2009  matt Fix build problems with CPUFLAGS.
 1.4.2.2.4.1 05-Sep-2009  matt If build a N64 userland, enable elf64 support in ldd.
 1.6.10.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.4.1 29-Aug-2014  martin Pull up following revision(s) (requested by joerg in ticket #64):
usr.bin/ldd/elf64/Makefile: revision 1.8
Fix ldd on LP64 platforms by splitting the symbol versioning stuff for
elf64 as well.
 1.8.14.1 25-Jun-2018  pgoyette Sync with HEAD
 1.9.2.1 10-Jun-2019  christos Sync with HEAD

RSS XML Feed