| Submitter | Jan Paesmans |
|---|---|
| Date | March 16, 2011, 11:56 p.m. |
| Message ID | <4D814E28.6080701@gmail.com> |
| Download | mbox | patch |
| Permalink | /patch/1493/ |
| State | New, archived |
| Headers | show |
Comments
On 03/16/2011 04:56 PM, Jan Paesmans wrote: > On 03/16/11 23:01, Tom Rini wrote: >> On 03/16/2011 01:49 PM, Jan Paesmans wrote: >>> Hi all, >>> >>> When trying to build an x11-image for pm9263 with angstrom-2010.x, >>> perl-native fails to build. >>> The error is listed below. As far as I can tell, the problem is that a >>> gcc flag is passed to the linker, -fstack-protector. I tried to find out >>> where this -fstack-protector could come from, but the only trace I could >>> find was in the Configure of perl-native itself. There is no mention >>> that it is set when Configure is called in the configure step, nor in >>> any of the environment variables during the do_configure or >>> do_compile step. >>> >>> I run Ubuntu 10.10 with gold as the linker. I thought that it might be >>> the gold linker but neither gold nor ld seem to have this option when >>> reviewing the man-page. >> >> Can you edit the recipe and add in: >> EXTRA_OEMAKE = 'LD="${CCLD}"' >> >> And do a bitbake -c clean perl-native then bitbake perl-native >> Thanks. >> > That did the trick. Now perl-native compiles fine. However when I > checked the output of the log.do_compile I did notice a change a the > behaviour. I was expecting the -fstack-protector flag to be gone, > instead it is still there. However, instead of invoking ld for the final > link, now gcc is invoked. Below you can find the relevent section of the > log file. Also in attachment is a patch with the change you suggested. OK, thanks. I'll put this into a patch this weekend. What's going on is that while I'm not sure where -fstack-protector is coming from (but it's a useful flag), as you saw, 'ld' chokes on it. But for linking you shouldn't really ever invoke ld directly but rather via gcc, so passing LD=${CCLD} overrides perl's makefiles and we invoke gcc as the linker and it handles the flag right in this case. > > Thanks for the help. > Regards, > > Jan > > Running Makefile.PL in ext/DynaLoader > ../../miniperl -I../../lib Makefile.PL INSTALLDIRS=perl > INSTALLMAN1DIR=none INSTALLMAN3DIR=none PERL_CORE=1 LIBPERL_A=libperl.so > LINKTYPE=static > Processing hints file hints/linux.pl > Unrecognized argument in LIBS ignored: > '-Wl,-rpath-link,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib' > Unrecognized argument in LIBS ignored: > '-Wl,-rpath,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib' > Unrecognized argument in LIBS ignored: '-Wl,-O1' > Unrecognized argument in LIBS ignored: '-fstack-protector' > Writing Makefile for DynaLoader > make[1]: Entering directory > `/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > make[1]: Leaving directory > `/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > Making all in ext/DynaLoader > make all PERL_CORE=1 LIBPERL_A=libperl.so LINKTYPE=static > make[1]: Entering directory > `/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > ../../miniperl "-I../../lib" "-I../../lib" DynaLoader_pm.PL DynaLoader.pm > ../../miniperl "-I../../lib" "-I../../lib" XSLoader_pm.PL XSLoader.pm > cp XSLoader.pm ../../lib/XSLoader.pm > cp DynaLoader.pm ../../lib/DynaLoader.pm > AutoSplitting ../../lib/DynaLoader.pm (../../lib/auto/DynaLoader) > rm -f DynaLoader.xs > cp dl_dlopen.xs DynaLoader.xs > ../../miniperl "-I../../lib" "-I../../lib" ../../lib/ExtUtils/xsubpp > -noprototypes -typemap ../../lib/ExtUtils/typemap DynaLoader.xs> > DynaLoader.xsc&& mv DynaLoader.xsc DynaLoader.c > gcc -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe > -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE > -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.10\" -DXS_VERSION=\"1.10\" > -fPIC "-I../.." -DLIBC="/lib/libc-2.12.1.so" DynaLoader.c > rm -rf ../../DynaLoader.o > cp DynaLoader.o ../../DynaLoader.o > make[1]: Leaving directory > `/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > rm -f libperl.so > gcc -o libperl.so -shared -O2 > -L/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > -L/usr/local/lib -fstack-protector op.o perl.o gv.o toke.o perly.o > pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o > pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o > utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o > numeric.o mathoms.o locale.o pp_pack.o pp_sort.o DynaLoader.o -lnsl > -ldl -lm -lcrypt -lutil -lpthread -lc > LD_LIBRARY_PATH=/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1 > gcc -o perl > -L/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > -Wl,-rpath-link,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > -Wl,-rpath,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > -Wl,-O1 -fstack-protector -L/usr/local/lib -Wl,-E > -Wl,-rpath,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib/perl/5.10.1/CORE > perlmain.o libperl.so `cat ext.libs` -lnsl -ldl -lm -lcrypt -lutil > -lpthread -lc > LD_LIBRARY_PATH=/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1 > ./miniperl -Ilib mkppport > running > /home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/miniperl > -I../../lib PPPort_pm.PL > > > > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
On (19/03/11 07:01), Tom Rini wrote: > On 03/16/2011 04:56 PM, Jan Paesmans wrote: > >On 03/16/11 23:01, Tom Rini wrote: > >>On 03/16/2011 01:49 PM, Jan Paesmans wrote: > >>>Hi all, > >>> > >>>When trying to build an x11-image for pm9263 with angstrom-2010.x, > >>>perl-native fails to build. > >>>The error is listed below. As far as I can tell, the problem is that a > >>>gcc flag is passed to the linker, -fstack-protector. I tried to find out > >>>where this -fstack-protector could come from, but the only trace I could > >>>find was in the Configure of perl-native itself. There is no mention > >>>that it is set when Configure is called in the configure step, nor in > >>>any of the environment variables during the do_configure or > >>>do_compile step. > >>> > >>>I run Ubuntu 10.10 with gold as the linker. I thought that it might be > >>>the gold linker but neither gold nor ld seem to have this option when > >>>reviewing the man-page. > >> > >>Can you edit the recipe and add in: > >>EXTRA_OEMAKE = 'LD="${CCLD}"' > >> actually when inheriting native it export LD=ld in envronment and thats whats used in makefiles You could try setting export LD=${CC} just after inherit native in the perl-native recipe I have a simialr fix lined up for oe-core > >>And do a bitbake -c clean perl-native then bitbake perl-native > >>Thanks. > >> > >That did the trick. Now perl-native compiles fine. However when I > >checked the output of the log.do_compile I did notice a change a the > >behaviour. I was expecting the -fstack-protector flag to be gone, > >instead it is still there. However, instead of invoking ld for the final > >link, now gcc is invoked. Below you can find the relevent section of the > >log file. Also in attachment is a patch with the change you suggested. > > OK, thanks. I'll put this into a patch this weekend. What's going > on is that while I'm not sure where -fstack-protector is coming from > (but it's a useful flag), as you saw, 'ld' chokes on it. But for > linking you shouldn't really ever invoke ld directly but rather via > gcc, so passing LD=${CCLD} overrides perl's makefiles and we invoke > gcc as the linker and it handles the flag right in this case. > > > > >Thanks for the help. > >Regards, > > > >Jan > > > >Running Makefile.PL in ext/DynaLoader > >../../miniperl -I../../lib Makefile.PL INSTALLDIRS=perl > >INSTALLMAN1DIR=none INSTALLMAN3DIR=none PERL_CORE=1 LIBPERL_A=libperl.so > >LINKTYPE=static > >Processing hints file hints/linux.pl > >Unrecognized argument in LIBS ignored: > >'-Wl,-rpath-link,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib' > >Unrecognized argument in LIBS ignored: > >'-Wl,-rpath,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib' > >Unrecognized argument in LIBS ignored: '-Wl,-O1' > >Unrecognized argument in LIBS ignored: '-fstack-protector' > >Writing Makefile for DynaLoader > >make[1]: Entering directory > >`/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > >make[1]: Leaving directory > >`/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > >Making all in ext/DynaLoader > > make all PERL_CORE=1 LIBPERL_A=libperl.so LINKTYPE=static > >make[1]: Entering directory > >`/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > >../../miniperl "-I../../lib" "-I../../lib" DynaLoader_pm.PL DynaLoader.pm > >../../miniperl "-I../../lib" "-I../../lib" XSLoader_pm.PL XSLoader.pm > >cp XSLoader.pm ../../lib/XSLoader.pm > >cp DynaLoader.pm ../../lib/DynaLoader.pm > >AutoSplitting ../../lib/DynaLoader.pm (../../lib/auto/DynaLoader) > >rm -f DynaLoader.xs > >cp dl_dlopen.xs DynaLoader.xs > >../../miniperl "-I../../lib" "-I../../lib" ../../lib/ExtUtils/xsubpp > >-noprototypes -typemap ../../lib/ExtUtils/typemap DynaLoader.xs> > >DynaLoader.xsc&& mv DynaLoader.xsc DynaLoader.c > >gcc -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe > >-fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE > >-D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.10\" -DXS_VERSION=\"1.10\" > >-fPIC "-I../.." -DLIBC="/lib/libc-2.12.1.so" DynaLoader.c > >rm -rf ../../DynaLoader.o > >cp DynaLoader.o ../../DynaLoader.o > >make[1]: Leaving directory > >`/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/ext/DynaLoader' > >rm -f libperl.so > >gcc -o libperl.so -shared -O2 > >-L/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > >-L/usr/local/lib -fstack-protector op.o perl.o gv.o toke.o perly.o > >pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o > >pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o > >utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o > >numeric.o mathoms.o locale.o pp_pack.o pp_sort.o DynaLoader.o -lnsl > >-ldl -lm -lcrypt -lutil -lpthread -lc > >LD_LIBRARY_PATH=/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1 > >gcc -o perl > >-L/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > >-Wl,-rpath-link,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > >-Wl,-rpath,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib > >-Wl,-O1 -fstack-protector -L/usr/local/lib -Wl,-E > >-Wl,-rpath,/home/janp/src/openembedded/build/tmp/sysroots/x86_64-linux/usr/lib/perl/5.10.1/CORE > >perlmain.o libperl.so `cat ext.libs` -lnsl -ldl -lm -lcrypt -lutil > >-lpthread -lc > >LD_LIBRARY_PATH=/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1 > >./miniperl -Ilib mkppport > >running > >/home/janp/src/openembedded/build/tmp/work/x86_64-linux/perl-native-5.10.1-r10/perl-5.10.1/miniperl > >-I../../lib PPPort_pm.PL > > > > > > > > > >_______________________________________________ > >Openembedded-devel mailing list > >Openembedded-devel@lists.openembedded.org > >http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > > > -- > Tom Rini > Mentor Graphics Corporation > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
On 03/19/11 19:44, Khem Raj wrote: > On (19/03/11 07:01), Tom Rini wrote: >> On 03/16/2011 04:56 PM, Jan Paesmans wrote: >>> On 03/16/11 23:01, Tom Rini wrote: >>>> On 03/16/2011 01:49 PM, Jan Paesmans wrote: >>>>> Hi all, >>>>> >>>>> When trying to build an x11-image for pm9263 with >>>>> angstrom-2010.x, perl-native fails to build. The error is >>>>> listed below. As far as I can tell, the problem is that a gcc >>>>> flag is passed to the linker, -fstack-protector. I tried to >>>>> find out where this -fstack-protector could come from, but >>>>> the only trace I could find was in the Configure of >>>>> perl-native itself. There is no mention that it is set when >>>>> Configure is called in the configure step, nor in any of the >>>>> environment variables during the do_configure or do_compile >>>>> step. >>>>> >>>>> I run Ubuntu 10.10 with gold as the linker. I thought that it >>>>> might be the gold linker but neither gold nor ld seem to have >>>>> this option when reviewing the man-page. >>>> >>>> Can you edit the recipe and add in: EXTRA_OEMAKE = >>>> 'LD="${CCLD}"' >>>> > > actually when inheriting native it export LD=ld in envronment and > thats whats used in makefiles > > You could try setting > > export LD=${CC} just after inherit native in the perl-native recipe > > I have a simialr fix lined up for oe-core sorry for the late reply. Khem's solution also seems to work. I did a 'bitbake -c clean perl-native && bitbake perl-native' with the other suggestion and that succeeded. However the EXTRA_OEMAKE seems cleaner. Regards, Jan >>>> And do a bitbake -c clean perl-native then bitbake perl-native >>>> Thanks. >>>> >>> That did the trick. Now perl-native compiles fine. However when >>> I checked the output of the log.do_compile I did notice a change >>> a the behaviour. I was expecting the -fstack-protector flag to be >>> gone, instead it is still there. However, instead of invoking ld >>> for the final link, now gcc is invoked. Below you can find the >>> relevent section of the log file. Also in attachment is a patch >>> with the change you suggested. >> >> OK, thanks. I'll put this into a patch this weekend. What's >> going on is that while I'm not sure where -fstack-protector is >> coming from (but it's a useful flag), as you saw, 'ld' chokes on >> it. But for linking you shouldn't really ever invoke ld directly >> but rather via gcc, so passing LD=${CCLD} overrides perl's >> makefiles and we invoke gcc as the linker and it handles the flag >> right in this case. >> >>> >>> Thanks for the help. Regards, >>> >>> Jan
Patch
diff --git a/recipes/perl/perl-native_5.10.1.bb b/recipes/perl/perl-native_5.10.1.bb index 5aa0c7b..586fcbd 100644 --- a/recipes/perl/perl-native_5.10.1.bb +++ b/recipes/perl/perl-native_5.10.1.bb @@ -29,6 +29,8 @@ S = "${WORKDIR}/perl-${PV}" inherit native +EXTRA_OEMAKE = 'LD="${CCLD}"' + do_configure () { ./Configure \ -Dcc="${CC}" \