musl: build-path: fix reading DT_RUNPATH or DT_RPATH

musl records DT_STRTAB as offset, rather than address. So, need to add
obtained bias to read runpath or rpath.
This commit is contained in:
Yu Watanabe
2025-11-13 08:02:05 +09:00
parent 3866923a68
commit 4b774c740b
+3 -3
View File
@@ -34,11 +34,11 @@ static int get_runpath_from_dynamic(const ElfW(Dyn) *d, ElfW(Addr) bias, const c
break;
case DT_STRTAB:
/* On MIPS and RISC-V DT_STRTAB records an offset, not a valid address, so it has to be adjusted
* using the bias calculated earlier. */
/* On MIPS, RISC-V, or with musl, DT_STRTAB records an offset, not a valid address,
* so it has to be adjusted using the bias calculated earlier. */
if (d->d_un.d_val != 0)
strtab = (const char *) ((uintptr_t) d->d_un.d_val
#if defined(__mips__) || defined(__riscv)
#if defined(__mips__) || defined(__riscv) || !defined(__GLIBC__)
+ bias
#endif
);