grub-devel
[Top][All Lists]
Advanced

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

Re: PPC build failure with undefined symbols __ashldi3, _restgpr_14_x, .


From: Andrey Borzenkov
Subject: Re: PPC build failure with undefined symbols __ashldi3, _restgpr_14_x, ...
Date: Fri, 15 Nov 2013 18:35:39 +0400

В Fri, 15 Nov 2013 15:02:11 +0100
Vladimir 'φ-coder/phcoder' Serbinenko <address@hidden> пишет:

> On 15.11.2013 14:43, Andrey Borzenkov wrote:
> > В Fri, 15 Nov 2013 13:33:07 +0100
> > Vladimir 'φ-coder/phcoder' Serbinenko <address@hidden> пишет:
> > 
> >> On 15.11.2013 13:22, Andrey Borzenkov wrote:
> >>> В Fri, 15 Nov 2013 12:00:49 +0100
> >>> Vladimir 'φ-coder/phcoder' Serbinenko <address@hidden> пишет:
> >>>
> >>>> On 15.11.2013 06:19, Andrey Borzenkov wrote:
> >>>>> Sources at 6fcec439545c817fbc8e2f51c667a70037a34a76
> >>>>>
> >>>>> Building RPM for PPC (32 or 64 bits) I get
> >>>>>
> >>>>> [  187s] cat syminfo.lst | sort | gawk -f ../../grub-core/genmoddep.awk 
> >>>>> > moddep.lst || (rm -f moddep.lst; exit 1)
> >>>>> [  187s] __ashldi3 in affs is not defined
> >>>>> [  187s] _restgpr_14_x in affs is not defined
> >>>>> [  187s] _restgpr_20_x in affs is not defined
> >>>>> [  187s] _restgpr_25_x in affs is not defined
> >>>>> [  187s] _restgpr_27_x in affs is not defined
> >>>>> [  187s] _restgpr_28_x in affs is not defined
> >>>>> [  187s] _restgpr_30_x in affs is not defined
> >>>>> ...
> >>>>>
> >>>>> for a long list of them.
> >>>>>
> >>>>> Full build logs are available as
> >>>>> https://build.opensuse.org/build/home:arvidjaar:grub2-next/openSUSE_Factory_PowerPC/ppc/grub2/_log
> >>>>> https://build.opensuse.org/build/home:arvidjaar:grub2-next/openSUSE_Factory_PowerPC/ppc64/grub2/_log
> >>>>>
> >>>>> I do not myself have access to any PPC system nor any experience with
> >>>>> them.
> >>>>>
> >>>> You don't have multilib installed.
> >>>
> >>> Could you elaborate? This is native build on PPC system. It has both 64
> >>> and 32 bit of gcc and libgcc installed:
> >>>
> >>> [   12s] libgcc_s1-32bit-4.8.1_20130909-5.1    
> >>> ########################################
> >>> [   10s] libgcc_s1-4.8.1_20130909-5.1          
> >>> ########################################
> >>> [   17s] gcc48-4.8.1_20130909-5.1              
> >>> ########################################
> >>> [   17s] gcc48-32bit-4.8.1_20130909-5.1        
> >>> ########################################
> >>>
> >>> This did build successfully until some recent changes (grub2 *is* part
> >>> of openSUSE for PPC). I compared logs for x86 and ppc and both say
> >>>
> >>> [  119s] checking for __bswapsi2... no
> >>> [  119s] checking for __bswapdi2... no
> >>> [  119s] checking for __ashldi3... no
> >>> [  120s] checking for __ashrdi3... no
> >>> [  120s] checking for __lshrdi3... no
> >>> [  120s] checking for __ucmpdi2... no
> >>> [  120s] checking for _restgpr_14_x... no
> >>>
> >>> unfortunately I'm stuck here. For all I can tell it should either fail
> >>> or succeed in both cases.
> >>>
> >> It should say all "no" on x86 and almost all "yes" on ppc. This output
> >> indicates that link with libgcc failed. You can look how exactly the
> >> test failed in config.log. Can you send me config.log ?
> > 
> > Initially it failed due to missing -lc. After adding glibc-devel-static
> > to buildrequires it now fails due to redefined abort:
> > 
> > [  121s] configure:25260: checking for __bswapsi2
> > [  121s] configure:25260: gcc -o conftest  -Os -Wall -W -Wshadow 
> > -Wold-style-definition -Wpointer-arith -Wundef -Wextra -Wattributes 
> > -Wchar-subscripts -Wcomment -Wdeprecated-declarations 
> > -Wdisabled-optimization -Wdiv-by-zero -Wendif-labels -Wfloat-equal 
> > -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit 
> > -Wimplicit-function-declaration -Wimplicit-int -Winit-self 
> > -Wint-to-pointer-cast -Winvalid-pch -Wmain -Wmissing-braces 
> > -Wmissing-field-initializers -Wmissing-format-attribute -Wmultichar 
> > -Wnonnull -Woverflow -Wparentheses -Wpointer-arith -Wpointer-to-int-cast 
> > -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wstrict-aliasing 
> > -Wswitch -Wtrigraphs -Wundef -Wunknown-pragmas -Wunused -Wunused-function 
> > -Wunused-label -Wunused-parameter -Wunused-value  -Wunused-variable 
> > -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wnested-externs 
> > -Wstrict-prototypes -Wpointer-sign -g -Wredundant-decls 
> > -Wmissing-prototypes -Wmissing-declarations -Wcast-align -m32 -freg-struct-
> return -fno-dwarf2-cfi-asm -fno-asynchronous-unwind-tables 
> -fno-stack-protector -Wl,--defsym,abort=main  -Wall -W 
> -I$(top_srcdir)/include -I$(top_builddir)/include  -DGRUB_MACHINE_IEEE1275=1 
> -DGRUB_MACHINE=POWERPC_IEEE1275 -DGRUB_TARGET_CPU_POWERPC=1 -m32 -static -m32 
> conftest.c -lgcc >&5
> > [  121s] conftest.c:385:1: warning: function declaration isn't a prototype 
> > [-Wstrict-prototypes]
> > [  121s]  char __bswapsi2 ();
> > [  121s] conftest.c:385:1: warning: function declaration isn't a prototype 
> > [-Wstrict-prototypes]
> > [  121s]  char __bswapsi2 ();
> > [  121s]  ^
> > [  121s] 
> > /usr/lib/gcc/powerpc64-suse-linux/4.8/../../../../lib/libc.a(abort.o): In 
> > function `abort':
> > [  121s] /home/abuild/rpmbuild/BUILD/glibc-2.18/stdlib/abort.c:51: multiple 
> > definition of `abort'
> > [  121s] collect2: error: ld returned 1 exit status
> > 
> Try this:
> diff --git a/configure.ac b/configure.ac
> index 2c4f019..cd96588 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -821,6 +821,8 @@ CFLAGS="$TARGET_CFLAGS -Wl,--defsym,abort=main"
>  fi
>  fi
> 
> +CFLAGS="$CFLAGS -nostdlib"
> +
>  # Check for libgcc symbols
>  AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3
> __ucmpdi2 _restgpr_14_x)
> 
> 
> > 
> > -static is added by grub2.spec. I'm not sure, why - is it really needed?
> > 

Actually removing explicit TARGET_LDFLAGS=-static in grub2.spec fixed
it. I now wonder why it was added in the first place.

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]