Open noloader opened 4 years ago
Yeah, this is the runpath problem. When LDFLAGS
uses a runpath of:
-Wl,-R,'$ORIGIN/../lib' -Wl,-R,/export/home/jwalton/tmp/ok2delete/lib
Perl screws it up. When I run elfdump
on the resulting binaries, Perl has munged it to:
perl-5.32.0$ find . -name '*.so*' | head -n 1
./lib/auto/POSIX/POSIX.so
perl-5.32.0$ elfdump lib/auto/POSIX/POSIX.so | /usr/gnu/bin/grep -E 'RPATH|RUNPATH'
[7] RUNPATH 0xfc3 /../lib:/export/home/jwalton/tmp/ok2delete/lib
[8] RPATH 0xfc3 /../lib:/export/home/jwalton/tmp/ok2delete/lib
/../lib
(which started as $ORIGIN/../lib
) happens to be the old zLib in /lib
. That's the zLib with the CVE. So Perl is compiling and linking against one version of the library, and then runtime linking against the wrong version of the library.
The build system is breaking stuff. Perl needs to fix the handling of runpaths from Issue 17534.
For completeness, Perl may encounter three similar variables: $ORIGIN
, $LIB
and $PLATFORM
. Also see the ld.so (8)
man page.
(And NO, I can't delete the old version of zLib in /lib
as Perl suggests).
This appears to be a duplicate of https://github.com/Perl/perl5/issues/17534. There is no clear way to fix this within Configure, and we never got a response whether the suggested config.over trick might work, or whether the simpler "edit config.sh and Makefile" approach worked.
Description
I am building Perl 5.32.0 on Solaris 11.3 i86 pc. Perl configuration and build appears OK, but Perl finishes with:
Steps to Reproduce
Build Perl 5.32.0 on Solaris 11.3. Be sure to run
make check
.Expected behavior
Successful tests.
Perl configuration
I can provide remote access to this box if a VM is not handy.
You can also find access to Solaris machines at the GCC Compile Farm. Accounts are free to FOSS developers.
This may have something to do with the failure. I see the runpath problem is still present.