Open p5pRT opened 5 years ago
When Perl 5.30.0 is build with LTO optimisation linking of the miniperl fails with:
rm -rf mpdtrace mkdir mpdtrace cp opmini.o perlmini.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys. CFLAGS="`sh cflags "optimize='-g'" dtrace_mini.o`" /usr/bin/dtrace -G -s perldtrace.d -o dtrace_mini.o mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace gcc -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin -fstack-protector-strong -L/usr/local/lib -o miniperl mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace/toke.o mpdtrace/perly.o mpdtrace/pad.o mpdtrace/regcomp.o mpdtrace/dump.o mpdtrace/util.o mpdtrace/mg.o perl.h:7278:19: warning: type of 'PL_nan' does not match original declaration [-Wlto-type-mismatch] 7278 | INFNAN_NV_U8_DECL PL_nan; | ^ perl.h:7248:19: note: 'PL_nan' was previously declared here 7248 | INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; | ^ perl.h:7277:19: warning: type of 'PL_inf' does not match original declaration [-Wlto-type-mismatch] 7277 | INFNAN_NV_U8_DECL PL_inf; | ^ perl.h:7212:19: note: 'PL_inf' was previously declared here 7212 | INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; | ^ /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_phase__change_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x120): undefined reference to `perl_sub__return_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_loading__file_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x6c): undefined reference to `perl_loaded__file_semaphore' collect2: error: ld returned 1 exit status make: *** [makefile:398: lib/buildcustomize.pl] Error 1 error: Bad exit status from /var/tmp/rpm-tmp.Mv5rO5 (%build)
On Sun\, 30 Jun 2019 23:00:02 GMT\, kloczko.tomasz@gmail.com wrote:
This is a bug report for perl from kloczko.tomasz@gmail.com\, generated with the help of perlbug 1.41 running under perl 5.30.0.
----------------------------------------------------------------- [Please describe your issue here] When Perl 5.30.0 is build with LTO optimisation linking of the miniperl fails with:
rm -rf mpdtrace mkdir mpdtrace cp opmini.o perlmini.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys. CFLAGS="`sh cflags "optimize='-g'" dtrace_mini.o`" /usr/bin/dtrace -G -s perldtrace.d -o dtrace_mini.o mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace gcc -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin -fstack-protector-strong -L/usr/local/lib -o miniperl mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace/toke.o mpdtrace/perly.o mpdtrace/pad.o mpdtrace/regcomp.o mpdtrace/dump.o mpdtrace/util.o mpdtrace/mg.o perl.h:7278:19: warning: type of 'PL_nan' does not match original declaration [-Wlto-type-mismatch] 7278 | INFNAN_NV_U8_DECL PL_nan; | ^ perl.h:7248:19: note: 'PL_nan' was previously declared here 7248 | INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; | ^ perl.h:7277:19: warning: type of 'PL_inf' does not match original declaration [-Wlto-type-mismatch] 7277 | INFNAN_NV_U8_DECL PL_inf; | ^ perl.h:7212:19: note: 'PL_inf' was previously declared here 7212 | INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; | ^ /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_phase__change_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x120): undefined reference to `perl_sub__return_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_loading__file_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x6c): undefined reference to `perl_loaded__file_semaphore' collect2: error: ld returned 1 exit status make: *** [makefile:398: lib/buildcustomize.pl] Error 1 error: Bad exit status from /var/tmp/rpm-tmp.Mv5rO5 (%build)
Can you supply the full ./Configure command you used in this attempt to build perl?
What is meant by LTO optimization?
-- James E Keenan (jkeenan@cpan.org)
The RT System itself - Status changed from 'new' to 'open'
On Sun\, 30 Jun 2019 16:00:02 -0700\, kloczko.tomasz@gmail.com wrote:
When Perl 5.30.0 is build with LTO optimisation linking of the miniperl fails with:
rm -rf mpdtrace mkdir mpdtrace cp opmini.o perlmini.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys. CFLAGS="`sh cflags "optimize='-g'" dtrace_mini.o`" /usr/bin/dtrace -G -s perldtrace.d -o dtrace_mini.o mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace gcc -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin -fstack-protector-strong -L/usr/local/lib -o miniperl mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace/toke.o mpdtrace/perly.o mpdtrace/pad.o mpdtrace/regcomp.o mpdtrace/dump.o mpdtrace/util.o mpdtrace/mg.o perl.h:7278:19: warning: type of 'PL_nan' does not match original declaration [-Wlto-type-mismatch] 7278 | INFNAN_NV_U8_DECL PL_nan; | ^ perl.h:7248:19: note: 'PL_nan' was previously declared here 7248 | INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; | ^ perl.h:7277:19: warning: type of 'PL_inf' does not match original declaration [-Wlto-type-mismatch] 7277 | INFNAN_NV_U8_DECL PL_inf; | ^ perl.h:7212:19: note: 'PL_inf' was previously declared here 7212 | INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; | ^ /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_phase__change_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x120): undefined reference to `perl_sub__return_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_loading__file_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x6c): undefined reference to `perl_loaded__file_semaphore' collect2: error: ld returned 1 exit status make: *** [makefile:398: lib/buildcustomize.pl] Error 1 error: Bad exit status from /var/tmp/rpm-tmp.Mv5rO5 (%build)
Please provide the options you supplied to Configure.
I tried a simple
./Configure -des -Dusedevel -Dusedtrace -Doptimize='-O2 -g -flto' -Dusethreads && make miniperl
which successfully built miniperl (which is where your build failed.)
I did get the type mismatch warnings\, which I'll look into.
Tony
On Sun\, Jun 30\, 2019 at 6:57 PM James E Keenan via RT \perlbug\-followup@​perl\.org wrote:
What is meant by LTO optimization?
On Mon\, 01 Jul 2019 23:17:21 -0700\, tonyc wrote:
On Sun\, 30 Jun 2019 16:00:02 -0700\, kloczko.tomasz@gmail.com wrote:
When Perl 5.30.0 is build with LTO optimisation linking of the miniperl fails with:
rm -rf mpdtrace mkdir mpdtrace cp opmini.o perlmini.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys. CFLAGS="`sh cflags "optimize='-g'" dtrace_mini.o`" /usr/bin/dtrace -G -s perldtrace.d -o dtrace_mini.o mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace gcc -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin -fstack-protector-strong -L/usr/local/lib -o miniperl mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace/toke.o mpdtrace/perly.o mpdtrace/pad.o mpdtrace/regcomp.o mpdtrace/dump.o mpdtrace/util.o mpdtrace/mg.o perl.h:7278:19: warning: type of 'PL_nan' does not match original declaration [-Wlto-type-mismatch] 7278 | INFNAN_NV_U8_DECL PL_nan; | ^ perl.h:7248:19: note: 'PL_nan' was previously declared here 7248 | INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; | ^ perl.h:7277:19: warning: type of 'PL_inf' does not match original declaration [-Wlto-type-mismatch] 7277 | INFNAN_NV_U8_DECL PL_inf; | ^ perl.h:7212:19: note: 'PL_inf' was previously declared here 7212 | INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; | ^ /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_phase__change_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x120): undefined reference to `perl_sub__return_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_loading__file_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x6c): undefined reference to `perl_loaded__file_semaphore' collect2: error: ld returned 1 exit status make: *** [makefile:398: lib/buildcustomize.pl] Error 1 error: Bad exit status from /var/tmp/rpm-tmp.Mv5rO5 (%build)
Please provide the options you supplied to Configure.
I managed to reproduce some missing symbols (but not these) with:
./Configure -des -Dusedevel -Dusedtrace -Doptimize='-O1 -g -flto' -Dusethreads -Dusequadmath && make test-prep
Adding:
-Dar=gcc-ar
fixed them\, but there are some test failures\, of which there seem to be five basic causes:
1) goto fails in some way\, or crashes (op/eval.t\, op/goto.t\, lib/croak.t)
2) libperl.t fails because it insists on using /usr/bin/nm rather than $Config{nm} if you set -Dnm=gcc-nm\, if you fix that...
3) libperl.t doesn't handle some constants being moved to the text segment
4) PL_ppaddr despite not being constant is moved to the text segment\, which libperl.t correctly complains about
5) cpan/ExtUtils-MakeMaker/t/03-xsstatic.t fails its staticmulti test
On Mon\, 1 Jul 2019 at 00:56\, James E Keenan via RT \perlbug\-followup@​perl\.org wrote:
On Sun\, 30 Jun 2019 23:00:02 GMT\, kloczko.tomasz@gmail.com wrote:
This is a bug report for perl from kloczko.tomasz@gmail.com\, generated with the help of perlbug 1.41 running under perl 5.30.0.
----------------------------------------------------------------- [Please describe your issue here] When Perl 5.30.0 is build with LTO optimisation linking of the miniperl fails with:
rm -rf mpdtrace mkdir mpdtrace cp opmini.o perlmini.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys. CFLAGS="`sh cflags "optimize='-g'" dtrace_mini.o`" /usr/bin/dtrace -G -s perldtrace.d -o dtrace_mini.o mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace gcc -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin -fstack-protector-strong -L/usr/local/lib -o miniperl mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace/toke.o mpdtrace/perly.o mpdtrace/pad.o mpdtrace/regcomp.o mpdtrace/dump.o mpdtrace/util.o mpdtrace/mg.o perl.h:7278:19: warning: type of 'PL_nan' does not match original declaration [-Wlto-type-mismatch] 7278 | INFNAN_NV_U8_DECL PL_nan; | ^ perl.h:7248:19: note: 'PL_nan' was previously declared here 7248 | INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; | ^ perl.h:7277:19: warning: type of 'PL_inf' does not match original declaration [-Wlto-type-mismatch] 7277 | INFNAN_NV_U8_DECL PL_inf; | ^ perl.h:7212:19: note: 'PL_inf' was previously declared here 7212 | INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; | ^ /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_phase__change_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x120): undefined reference to `perl_sub__return_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_loading__file_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x6c): undefined reference to `perl_loaded__file_semaphore' collect2: error: ld returned 1 exit status make: *** [makefile:398: lib/buildcustomize.pl] Error 1 error: Bad exit status from /var/tmp/rpm-tmp.Mv5rO5 (%build)
Can you supply the full ./Configure command you used in this attempt to build perl?
What is meant by LTO optimization?
Here is begin of my rpm package build log:
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.zhL6ji + umask 022 + cd /home/tkloczko/rpmbuild/BUILD + cd perl-5.30.0 + export 'CFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto' + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto' + export 'CXXFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto' + CXXFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto' + export 'FFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules -flto' + FFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules -flto' + export 'FCFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules -flto' + FCFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules -flto' + export 'LDFLAGS=-Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin' + LDFLAGS='-Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin' + export AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm + AR=gcc-ar + RANLIB=gcc-ranlib + NM=gcc-nm + export CC=gcc CXX=g++ + CC=gcc + CXX=g++ + /bin/sh Configure -des -Darchlib=/usr/lib64/perl5 -Darchname=x86_64-linux-thread-multi -Dcc=gcc '-Dccdlflags=-Wl\,--enable-new-dtags -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin' '-Dccflags=-O2 -g -pipe -Wall -Werror=format-security -Wp\,-D_FORTIFY_SOURCE=2 -Wp\,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -flto' '-Dcf_by=Red Hat\, Inc.' -DDEBUGGING=-g -Dd_gethostent_r_proto -Dd_semctl_semun -Dfull_ar=gcc-ar -Dfull_ranlib=gcc-ranlib -Dar=gcc-ar -Dranlib=gcc-ranlib -Di_db -Dinstallusrbinperl=n -Di_shadow -Di_syslog '-Dlddlflags=-shared -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin' '-Dldflags=-Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin' -Dlibpth=/usr/lib64 -Dlibspath= -Dlocincpth= -Dloclibpth= -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dman3ext=3pm -Dmyhostname=localhost -Doptimize=none '-Dpager=/usr/bin/less -isr' -Dperladmin=root@localhost -Dprefix=/usr -Dprivlib=/usr/share/perl5 -Dscriptdir=/usr/bin -Dshrpdir=/usr/lib64 -Dsitearch=/usr/local/lib64/perl5/5.30 -Dsitelib=/usr/local/share/perl5/5.30 -Dsiteprefix=/usr/local -Duse64bitint -Duseithreads -Duselargefiles -Duseperlio -Duseshrplib -Dusesitecustomize -Dusethreads -Dvendorarch=/usr/lib64/perl5/vendor_perl -Dvendorlib=/usr/share/perl5/vendor_perl -Dvendorprefix=/usr -Dversion=1.33 -Ubincompat5005 -Ud_endhostent_r_proto -Ud_endprotoent_r_proto -Ud_endservent_r_proto -Ud_sethostent_r_proto -Ud_setprotoent_r_proto -Ud_setservent_r_proto -Uversiononly -Uusedtrace
Above is working. Actually after few more tries I found that LTO optimisation is *not working* and is failing as I've originaly reported when systemtap/dtrace support is enabled. So to reproduce what I found you need to s\,-Uusedtrace\,-Dusedtrace='/usr/bin/dtrace'\, in above.
Tomasz -- Tomasz KÅoczko | LinkedIn: http://lnkd.in/FXPWxH
On Tue\, 2 Jul 2019 at 07:17\, Tony Cook via RT \perlbug\-followup@​perl\.org wrote:
On Sun\, 30 Jun 2019 16:00:02 -0700\, kloczko.tomasz@gmail.com wrote:
When Perl 5.30.0 is build with LTO optimisation linking of the miniperl fails with:
rm -rf mpdtrace mkdir mpdtrace cp opmini.o perlmini.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys. CFLAGS="`sh cflags "optimize='-g'" dtrace_mini.o`" /usr/bin/dtrace -G -s perldtrace.d -o dtrace_mini.o mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace gcc -Wl\,-z\,relro -Wl\,--as-needed -Wl\,-z\,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto -fuse-linker-plugin -fstack-protector-strong -L/usr/local/lib -o miniperl mpdtrace/opmini.o mpdtrace/perlmini.o mpdtrace/gv.o mpdtrace/toke.o mpdtrace/perly.o mpdtrace/pad.o mpdtrace/regcomp.o mpdtrace/dump.o mpdtrace/util.o mpdtrace/mg.o perl.h:7278:19: warning: type of 'PL_nan' does not match original declaration [-Wlto-type-mismatch] 7278 | INFNAN_NV_U8_DECL PL_nan; | ^ perl.h:7248:19: note: 'PL_nan' was previously declared here 7248 | INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; | ^ perl.h:7277:19: warning: type of 'PL_inf' does not match original declaration [-Wlto-type-mismatch] 7277 | INFNAN_NV_U8_DECL PL_inf; | ^ perl.h:7212:19: note: 'PL_inf' was previously declared here 7212 | INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; | ^ /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_phase__change_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans19.ltrans.o:(.note.stapsdt+0x120): undefined reference to `perl_sub__return_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x24): undefined reference to `perl_loading__file_semaphore' /usr/bin/ld: /tmp/miniperl.bCBaN7.ltrans2.ltrans.o:(.note.stapsdt+0x6c): undefined reference to `perl_loaded__file_semaphore' collect2: error: ld returned 1 exit status make: *** [makefile:398: lib/buildcustomize.pl] Error 1 error: Bad exit status from /var/tmp/rpm-tmp.Mv5rO5 (%build)
Please provide the options you supplied to Configure.
I tried a simple
./Configure -des -Dusedevel -Dusedtrace -Doptimize='-O2 -g -flto' -Dusethreads && make miniperl
which successfully built miniperl (which is where your build failed.)
I did get the type mismatch warnings\, which I'll look into.
Did you combine that with -Wl\,--as-needed?
-- Tomasz KÅoczko | LinkedIn: http://lnkd.in/FXPWxH
Migrated from rt.perl.org#134241 (status was 'open')
Searchable as RT134241$