Re: [PATCH 4/4] libbpf: Search /lib64 and /lib in resolve_full_path()

From: Ihor Solodrai

Date: Thu Jul 16 2026 - 17:17:33 EST


On 7/10/26 3:09 PM, Ricardo B. Marlière wrote:
> attach_probe/uprobe-lib and uprobe_autoattach selftests fail with "failed
> to resolve full path for libc.so.6" on older non-usrmerged distros, where
> libc.so.6 lives under a top-level /lib64 or /lib rather than /usr/lib64 or
> /usr/lib. Add /lib64:/lib to the search paths, alongside the existing
> /usr/lib64:/usr/lib and Debian multiarch entries.
>
> Signed-off-by: Ricardo B. Marlière <rbm@xxxxxxxx>
> ---
> tools/lib/bpf/libbpf.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
> index 1368752aa13c..1ab939dfb7f0 100644
> --- a/tools/lib/bpf/libbpf.c
> +++ b/tools/lib/bpf/libbpf.c
> @@ -12973,13 +12973,14 @@ static const char *arch_specific_lib_paths(void)
> /* Get full path to program/shared library. */
> static int resolve_full_path(const char *file, char *result, size_t result_sz)
> {
> - const char *search_paths[3] = {};
> + const char *search_paths[4] = {};
> int i, perm;
>
> if (str_has_sfx(file, ".so") || strstr(file, ".so.")) {
> search_paths[0] = getenv("LD_LIBRARY_PATH");
> search_paths[1] = "/usr/lib64:/usr/lib";
> search_paths[2] = arch_specific_lib_paths();
> + search_paths[3] = "/lib64:/lib";

Acked-by: Ihor Solodrai <ihor.solodrai@xxxxxxxxx>

> perm = R_OK;
> } else {
> search_paths[0] = getenv("PATH");
>