Bug 5871 - eglibc build failure on several ppc machines
Summary: eglibc build failure on several ppc machines
Status: CLOSED FIXED
Alias: None
Product: BSPs
Classification: Build System, Metadata & Runtime
Component: bsps-meta-fsl-ppc (show other bugs)
Version: 1.6
Hardware: Other ppc
: Medium+ critical
Target Milestone: 1.6 M4
Assignee: Zhenhua Luo
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2014-02-24 16:03 UTC by Tudor Florea
Modified: 2014-04-08 02:35 UTC (History)
5 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: No (bug/feature does not impact docs)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tudor Florea 2014-02-24 16:03:13 UTC
Below is one example of the build fail:
bitbake eglibc
Loading cache: 100% |############################################################################################################| ETA:  00:00:00
Loaded 1255 entries from dependency cache.
Parsing recipes: 100% |##########################################################################################################| Time: 00:00:01
Parsing of 877 .bb files complete (789 cached, 88 parsed). 1250 targets, 63 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.21.1"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Ubuntu-12.10"
TARGET_SYS        = "powerpc-poky-linux"
MACHINE           = "p2041rdb"
DISTRO            = "poky"
DISTRO_VERSION    = "1.5+snapshot-20140224"
TUNE_FEATURES     = "m32 fpu-hard ppce500mc"
TARGET_FPU        = "hard"
meta              = "master:8d7dd9ae471ad6154cd4e59152560ff5f24b3c2a"
meta-fsl-ppc      = ...[custom]...
meta-yocto        
meta-yocto-bsp    = "master:8d7dd9ae471ad6154cd4e59152560ff5f24b3c2a"
...
powerpc-enea-linux-gcc  -m32 -mhard-float -mcpu=e500mc --sysroot/path/tobuild_p2041rdb/tmp/sysroots/p2041rdb-tcbootstrap ../sysdeps/ieee754/dbl-64/k_tan.c -c -std=gnu99 -fgnu89-inline  -O2 -Wall -Winline -Wwrite-strings -feliminate-unused-debug-types -fmerge-all-constants -frounding-math -g -mcpu=e500mc -pipe -mhard-float -Wstrict-prototypes -mlong-double-128     -Wno-uninitialized   -D__NO_MATH_INLINES -D__LIBC_INTERNAL_MATH_INLINES -I../include -I/media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/work/ppce500mc-enea-linux/eglibc/2.19-r0/build-powerpc-enea-linux/math  -I/media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/work/ppce500mc-enea-linux/eglibc/2.19-r0/build-powerpc-enea-linux  -I../sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu  -I../sysdeps/powerpc/powerpc32/e500mc/fpu  -I../ports/sysdeps/powerpc/powerpc32/e500mc/fpu  -I../sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc  -I../sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl  -I../sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu  -I../nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32  -I../sysdeps/unix/sysv/linux/powerpc/powerpc32  -I../nptl/sysdeps/unix/sysv/linux/powerpc  -I../sysdeps/unix/sysv/linux/powerpc  -I../nptl/sysdeps/unix/sysv/linux  -I../nptl/sysdeps/pthread  -I../sysdeps/pthread  -I../ports/sysdeps/unix/sysv/linux  -I../sysdeps/unix/sysv/linux  -I../sysdeps/gnu  -I../sysdeps/unix/inet  -I../nptl/sysdeps/unix/sysv  -I../ports/sysdeps/unix/sysv  -I../sysdeps/unix/sysv  -I../sysdeps/unix/powerpc  -I../nptl/sysdeps/unix  -I../ports/sysdeps/unix  -I../sysdeps/unix  -I../sysdeps/posix  -I../ports/sysdeps/powerpc/powerpc32/e500mc  -I../sysdeps/powerpc/powerpc32/e500mc  -I../sysdeps/powerpc/powerpc32/fpu  -I../ports/sysdeps/powerpc/powerpc32  -I../sysdeps/powerpc/powerpc32  -I../sysdeps/wordsize-32  -I../sysdeps/powerpc/fpu  -I../nptl/sysdeps/powerpc  -I../ports/sysdeps/powerpc  -I../sysdeps/powerpc  -I../sysdeps/ieee754/ldbl-128ibm  -I../sysdeps/ieee754/ldbl-opt  -I../sysdeps/ieee754/dbl-64  -I../sysdeps/ieee754/flt-32  -I../sysdeps/ieee754  -I../sysdeps/generic  -I../nptl  -I../ports  -I.. -I../libio -I. -nostdinc -isystem /media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/sysroots/x86_64-linux/usr/lib/ppce500mc-enea-linux.gcc-cross-initial/gcc/powerpc-enea-linux/4.8.2/include -isystem /media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/sysroots/x86_64-linux/usr/lib/ppce500mc-enea-linux.gcc-cross-initial/gcc/powerpc-enea-linux/4.8.2/include-fixed -isystem /media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/sysroots/p2041rdb/usr/include  -D_LIBC_REENTRANT -include ../include/libc-symbols.h   -DNOT_IN_libc=1 -DIS_IN_libm=1 -DIN_LIB=libm    -o /media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/work/ppce500mc-enea-linux/eglibc/2.19-r0/build-powerpc-enea-linux/math/k_tan.o -MD -MP -MF /media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/work/ppce500mc-enea-linux/eglibc/2.19-r0/build-powerpc-enea-linux/math/k_tan.o.dt -MT /media/sdd1/fb/tufl/linux/master-enea15/build_p2041rdb/tmp/work/ppce500mc-enea-linux/eglibc/2.19-r0/build-powerpc-enea-linux/math/k_tan.o
../sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c: In function '__slow_ieee754_sqrt':
../sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c:128:15: error: subscripted value is neither array nor pointer nor vector
       if ((u.l[1] & FE_INVALID) == 0)
               ^
../sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c:127:20: warning: variable 'u' set but not used [-Wunused-but-set-variable]
       fenv_union_t u = { .fenv = fegetenv_register () };
                    ^
Comment 1 Saul Wold 2014-02-27 09:12:12 UTC
This is more of a FSL issue since you are including the meta-fsl-ppc layer and may set additional flags for compiler/linker.
Comment 2 Tudor Florea 2014-02-27 16:10:41 UTC
This is a ppc specific problem that comes from this patch: pmeta/recipes-core/eglibc/eglibc-2.19/ppc_slow_ieee754_sqrt.patch
Comment 3 Khem Raj 2014-02-28 03:17:49 UTC
Please test out the patch I posted to contrib tree

http://git.openembedded.org/openembedded-core-contrib/commit/?h=kraj/misc&id=c5a2242079722ab266f4c9c9cddcd75caa3f1505
Comment 4 Zhenhua Luo 2014-03-03 11:07:19 UTC
(In reply to comment #3)
> Please test out the patch I posted to contrib tree
> 
> http://git.openembedded.org/openembedded-core-contrib/commit/?h=kraj/
> misc&id=c5a2242079722ab266f4c9c9cddcd75caa3f1505

The build issue goes away after applying the patch.
Comment 5 Khem Raj 2014-03-03 16:30:01 UTC
(In reply to comment #4)
> (In reply to comment #3)
> > Please test out the patch I posted to contrib tree
> > 
> > http://git.openembedded.org/openembedded-core-contrib/commit/?h=kraj/
> > misc&id=c5a2242079722ab266f4c9c9cddcd75caa3f1505
> 
> The build issue goes away after applying the patch.

How about boot and run
Comment 6 Chunrong Guo 2014-03-11 04:09:43 UTC
apply the patch and test system in p4080ds boards.
the system can boot successfully and gcc work well.


1. Test step:
  (1) tftp 1000000 p4080ds/uImagetest.bin;tftp c00000 p4080ds/uImage.dtb
  (2) setenv bootargs root=/dev/nfs rw nfsroot=10.193.20.117:/home/guo/tool/nfsroot ip=10.193.20.169:10.193.20.117:10.193.20.254:255.255.254.0:p4080ds:eth0:off console=ttyS0,115200 $othbootargs;bootm 1000000 - c00000

the system can boot successfully

2. Test gcc in rootfs:
gcc -lpthread -o main main.c
./main

gcc work well.
Comment 7 Tudor Florea 2014-03-12 01:31:12 UTC
Build and boot tested.
There are any testcases available to verify the correctness of __slow_ieee754_sqrt implementation?
Comment 8 Chunrong Guo 2014-03-12 03:10:40 UTC
I will verify "__slow_ieee754_sqrt " by testfloat case.
Comment 9 Chunrong Guo 2014-03-13 02:40:53 UTC
testfloat case work well.

the following information:
root@p1020rdb:~# testfloat -all
Testing int32_to_float32, rounding nearest_even.
372 tests total.
95 tests performed.
No errors found in int32_to_float32, rounding nearest_even.
Testing int32_to_float32, rounding to_zero.
372 tests total.
77 tests performed.
No errors found in int32_to_float32, rounding to_zero.
Testing int32_to_float32, rounding up.
372 tests total.
92 tests performed.
No errors found in int32_to_float32, rounding up.
Testing int32_to_float32, rounding down.
372 tests total.
92 tests performed.
No errors found in int32_to_float32, rounding down.
Testing int32_to_float64.
372 tests total.
0 tests performed.
No errors found in int32_to_float64.
Testing float32_to_int32_round_to_zero.
Comment 10 Richard Purdie 2014-04-04 15:00:11 UTC
This was resolved in master: http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=b130d75c037c3d458817711221a86aa74903b509
Comment 11 Chunrong Guo 2014-04-08 02:35:26 UTC
the patch is verified.