https://bugzilla.redhat.com/show_bug.cgi?id=2450007



--- Comment #15 from Jonathan Steffan <[email protected]> ---
(In reply to Tom.Rix from comment #13)
> (In reply to Mikel Olasagasti Uranga from comment #5)
> > - Checking upstream Makefile, NVIDIA sets to:
> > 
> > > EXTLDFLAGS = -Wl,--export-dynamic 
> > > -Wl,--unresolved-symbols=ignore-in-object-files -Wl,-z,lazy
> > 
> > https://github.com/NVIDIA/nvidia-container-toolkit/blob/main/Makefile#L63
> > 
> rpmlint is also complaining a lot about symbols.  What resolves these
> symbols ?

They are resolved at runtime by the linker:

  Library location (pkg/lookup/library.go): A First() combinator tries three
strategies in order,
  returning the first hit:
  1. Direct dlopen attempt
  2. Predefined filesystem search paths
  3. Parse /etc/ld.so.cache

  ld.so.cache parsing (internal/ldcache/ldcache.go): The binary cache is
mmap-ed directly. Each entry2
  struct has a Flags field with ELF architecture bits (0x0300 = x86_64, 0x0a00
= aarch64, etc.) used to
  filter 32-bit vs 64-bit libs. No ldconfig subprocess — raw struct parsing.

  dlopen/dlsym (vendor/github.com/NVIDIA/go-nvml/pkg/dl/dl.go): CGO wrapper
around libc dlopen/dlsym.
  Flags: RTLD_LAZY | RTLD_GLOBAL | RTLD_NODELETE. Every call is wrapped with
runtime.LockOSThread() for
  thread safety.

  Symlink chain resolution (pkg/lookup/symlinks/symlink.go): Once a library
path is found, the full
  symlink chain is walked (e.g., libcuda.so → libcuda.so.1 →
libcuda.so.550.1.0) and all aliases are
  collected — so containers get every soname variant.

  Versioned symbol negotiation (internal/nvsandboxutils/lib.go): After dlopen,
updateVersionedSymbols()
  probes for _v2/_v3 suffixed symbols via dlsym. If found, the function pointer
is upgraded — forward
  compatibility without ABI breaks.

  Summary: locate via ldcache mmap → dlopen → dlsym with version probing →
expose full symlink chain.


-- 
You are receiving this mail because:
You are always notified about changes to this product and component
You are on the CC list for the bug.
https://bugzilla.redhat.com/show_bug.cgi?id=2450007

Report this comment as SPAM: 
https://bugzilla.redhat.com/enter_bug.cgi?product=Bugzilla&format=report-spam&short_desc=Report%20of%20Bug%202450007%23c15

-- 
_______________________________________________
package-review mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/[email protected]
Do not reply to spam, report it: 
https://forge.fedoraproject.org/infra/tickets/issues/new

Reply via email to