History log of /freebsd-current/tools/build/check-links.sh
Revision Date Author Comments
# d0b2dbfa 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line sh pattern

Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/


# 88741a40 22-Sep-2021 Baptiste Daroussin <bapt@FreeBSD.org>

check-links.sh: treat PIE executable as elf files


# fcd26781 19-Jan-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Allow specifying an alternative LD_LIBRARY_PATH for the ldd(1) lookup.

This is needed to be able to run check-links.sh against a "sysrooted"
binary while ensuring that the ldd(1) call done on the host uses the
host libc. It is not possible to set LD_LIBRARY_PATH before calling
check-links.sh as then the "sysrooted" libc would be incorrectly used.

A LD_PRELOAD=libc.so is used to ldd(1) as it needs to use the host libc
to run. ldd(1) is a simple wrapper around execve(2) and dlopen(2) with
env LD_TRACE_LOADED_OBJECTS set. Due to the dlopen(2) restriction on
shared library tracing ldd(1) is still required for this lookup.

Sponsored by: EMC / Isilon Storage Division


# 8afa72e5 19-Jan-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Add some documentation.

Sponsored by: EMC / Isilon Storage Division


# d1db5f8f 19-Jan-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Validate that the file exists rather than obscure 'Not an elf file' error.

Sponsored by: EMC / Isilon Storage Division


# fc2ef3b2 30-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Add a -v to tell where each symbol is resolved from.

Sponsored by: EMC / Isilon Storage Division


# b0cb3920 30-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Fix a comment


# 64ee145b 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Tweak BSS symbol handling from r281811 to not consider them unresolved


# 5f6c4518 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Support libraries linked by path.

Sponsored by: EMC / Isilon Storage Division


# 3554283a 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

- For executables search for matching (B) global uninitialized BSS symbols from
linked libraries. Only do this for BSS symbols that have a size which avoids
__bss_start. Without this some libraries would be considered unneeded even
though they were providing a B symbol.
- Add in the symbols from crt1.o to cover a handful of common unresolved symbols.
- Consider (C) common data symbols as provided by libraries/crt1.
- Move libkey() function to more appropriate place.

Sponsored by: EMC / Isilon Storage Division


# 60b38ce2 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Revert r281805 for now as it breaks due to spaces in output


# c668010e 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Pass full path to ldd(1) so it works on files in cwd.


# 9d273a1f 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Support demangling C++ symbols with -D flag.

Sponsored by: EMC / Isilon Storage Division


# 3844bbe2 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

- Speedup significantly by not using subshells for data already fetched.
Ran against /usr/local/sbin/pkg:
Before: 25.12 real 12.41 user 33.14 sys
After: 0.53 real 0.49 user 0.13 sys
- Exit with 1 if any missing or unresolved symbol is detected.
- Add option '-U' to skip looking up unresolved symbols.
- Don't consider provided weak objects as unresolved (nm V).

Sponsored by: EMC / Isilon Storage Division


# 972b6227 20-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Fix indentation to use tabs


# daa301d1 09-Apr-2015 Bryan Drewery <bdrewery@FreeBSD.org>

- Fix support with new elftoolchain readelf(1)
- Fix not finding global symbols by checking for D and R.
- Follow symlinks
- Show which matching symbol was used to consider the library needed.

Discussed with: bapt


# 6276797f 06-Nov-2014 Baptiste Daroussin <bapt@FreeBSD.org>

Add a quick and dirty script to check validity of links in elf files