Re: distro perl's ldflags='... -Wl,-z,relro ...' causing module build errors. bug in distro perl flags? or module code?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/7/20 5:57 AM, Petr Pisar wrote:
> I think the build script does not use Perl configuration consistently. It uses
> ldflags value for the linker flags, but it does not use ld value for the linker
> exectable:
...
> $ perl -MConfig -E 'say $Config{ldflags}'
> -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector-strong -L/usr/local/lib
> $ perl -MConfig -E 'say $Config{ld}'
> gcc

double-checking here,

perl -MConfig -E 'say $Config{ldflags}'
	-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector-strong -L/usr/local/lib
perl -MConfig -E 'say $Config{ld}'
	gcc

> If your /usr/bin/ld is the binutils ld,

it is:

which ld
	/usr/bin/ld

ld -v
	GNU ld version 2.34-4.fc32

rpm -ql binutils | grep bin/ld
	/usr/bin/ld
	/usr/bin/ld.bfd


ls -al /usr/bin/ld
	lrwxrwxrwx. 1 root root 20 Jul 28 21:59 /usr/bin/ld -> /etc/alternatives/ld*
ls -al /etc/alternatives/ld
	lrwxrwxrwx. 1 root root 15 Jul 28 21:59 /etc/alternatives/ld -> /usr/bin/ld.bfd*

> 
then -fstack-protector-strong is also

> an invalid option for ld (see ld manual page) and it should also fail. I think

> something tricks you.

noted

> It's not intentional, but it's how perl works.
> 
> When you build perl, the linker flags are modified by a perl build script and
> built into the perl interpreter. Later when a third-party XS module is built,
> the built-in linker flags are reused. That's because the XS module must be
> binary compatible with the perl interpreter and having the same flags ensures
> it. (Some flags, especially compiler flags, changes ABI.) As a result, the
> third-party module is also built rerlo.
> 
> We would like to change it, but perl build script is a giant mess. When I asked
> perl authors for explaining the mess, it turned out that they do not fully
> understand it and, more imporatantly, that they do not want to touch it
> all because they fear breaking a compatibility.
> 
>> Or likely an issue with the module not correctly dealing with it?
> 
> I think that's the case. It should use gcc program for linking.

thx for the comments!  I'll share upstream.
_______________________________________________
perl-devel mailing list -- perl-devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to perl-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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/perl-devel@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Legacy Announce]     [Fedora PHP Devel]     [Kernel Devel]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Big List of Linux Books]     [Gimp]     [Yosemite Information]

  Powered by Linux