develooper Front page | perl.perl5.porters | Postings from July 2019

Re: [perl #134241] Perl 5.30.0 fails with LTO optimisation

Thread Next
From:
Tomasz Kłoczko
Date:
July 4, 2019 02:21
Subject:
Re: [perl #134241] Perl 5.30.0 fails with LTO optimisation
Message ID:
CABB28CyHrDPWosFsvapuxqVS2gRF2JvJrP6XGe19eEhgBnZj0Q@mail.gmail.com
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

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About