Bug 604

Summary: [toolchain]Build c program failed with arm toolchain
Product: [Build System, Metadata & Runtime] Meta-yocto Reporter: Yi Zhao <yi.zhao>
Component: meta-yoctoAssignee: Nitin Kamble <nitin.a.kamble>
Status: VERIFIED FIXED QA Contact:
Severity: major    
Priority: High CC: jiajun.xu, kevin.tian, liang.li2, liangliang.wang, poky.bs.watcher, poky.watcher, richard.purdie, sgw, yi.zhao
Version: 1.0   
Target Milestone: 1.0 M3   
Hardware: x86   
OS: arm   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Program Management Documentation change: ---

Description Yi Zhao 2010-12-20 01:31:44 UTC
Testing Env:    
Host: Ubuntu 10.10 x86_64
Kernel: 2.6.35-23-generic

With the arm sdk toolchain from autobuilder,
http://autobuilder.pokylinux.org/milestone/CURRENT/toolchain/x86_64/poky-eglibc-x86_64-arm-toolchain-sdk-0.9+snapshot-20101219.tar.bz2 , it build c program failed.


###################
# sudo tar xjvf poky-eglibc-x86_64-arm-toolchain-sdk-0.9+snapshot-20101219.tar.bz2 -C /

# source /opt/poky/0.9+snapshot-20101219/environment-setup-armv5te-poky-linux-gnueabi

# which ${CC}
/opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc

# ${CC} test.c -o test
as: unrecognized option '-mfloat-abi=soft'

###################

Look like it can not find the cross tool 'as', and use the host's 'as' instead.

There are incorrect sysmbolic links in directory /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/libexec/armv5te-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.5.1/
##################
#ls -l /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/libexec/armv5te-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.5.1/

lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 ar -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 as -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
-rwxr-xr-x 1 1006 users 10387653 2010-12-20 01:07 cc1
-rwxr-xr-x 1 1006 users 11216778 2010-12-20 01:07 cc1plus
-rwxr-xr-x 1 1006 users   157250 2010-12-20 01:07 collect2
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 cpp -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 g77 -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 gcc -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 gfortran -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 ld -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
-rwxr-xr-x 1 1006 users  9802170 2010-12-20 01:07 lto1
-rwxr-xr-x 1 1006 users    36747 2010-12-20 01:07 lto-wrapper
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 nm -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 objcopy -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 objdump -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 ranlib -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:09 strip -> /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm

####################

'ar' should be linked to /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-poky-linux-gnueabi-ar

When I modified the symbolic link manually, it can build successfully.
Comment 1 Yi Zhao 2010-12-20 01:36:50 UTC
Same issue in poky-eglibc-i586-arm-toolchain-sdk-0.9+snapshot-20101219.tar.bz2 

################################
$ls -l /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/libexec/armv5te-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.5.1

lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 ar -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 as -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
-rwxr-xr-x 1 1006 users  9295162 2010-12-19 23:20 cc1
-rwxr-xr-x 1 1006 users 10000645 2010-12-19 23:20 cc1plus
-rwxr-xr-x 1 1006 users   123242 2010-12-19 23:20 collect2
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 cpp -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 g77 -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 gcc -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 gfortran -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 ld -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
-rwxr-xr-x 1 1006 users  8796014 2010-12-19 23:20 lto1
-rwxr-xr-x 1 1006 users    27586 2010-12-19 23:20 lto-wrapper
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 nm -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 objcopy -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 objdump -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 ranlib -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p
lrwxrwxrwx 1 1006 users      100 2010-12-20 17:32 strip -> /opt/poky/0.9+snapshot-20101219/sysroots/i586-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-p

###############################
Comment 2 liang li 2010-12-20 18:48:36 UTC
This also happened on ppc toolchain(test env just like discription of yi zhao).
Error met when  run "${CC} test.c -o test":
as: unrecognized option '-mppc'
Comment 3 liang li 2010-12-20 18:52:18 UTC
This also happened on ppc toolchain(test env just like discription of yi zhao).
Error met when  run "${CC} test.c -o test":
as: unrecognized option '-mppc'
Comment 4 liang li 2010-12-20 18:54:07 UTC
This also happened on ppc toolchain(test env just like discription of yi zhao).
Error met when  run "${CC} test.c -o test":
as: unrecognized option '-mppc'
Comment 5 Liang Wang 2010-12-21 20:35:51 UTC
This issue also occurs on mips-toolchain. The symbolic links are wrong under path /opt/poky/0.9+snapshot-20101219/sysroots/x86_64-pokysdk-linux/usr/libexec/mips-poky-linux/gcc/mips-poky-linux/4.5.1.
Comment 6 Richard Purdie 2010-12-22 06:55:31 UTC
The pathnames are truncated at exactly 100 characters which is a limitation of tar under certain circumstances.

Inspecting the .ipk files, they're correct there but when extracted by opkg during the rootfs creation process, they are truncated. This is probably an issue with the deb_extract() which calls extract_archive() in libbb in opkg.

libbb in opkg is a very old version of libbb from busybox. There is no equivalent function in modern busybox that I can immediately see. Somehow, posix style tar files need to become supported by opkg to fix this bug.
Comment 7 Richard Purdie 2010-12-22 07:56:44 UTC
We need this fix from opkg:
http://code.google.com/p/opkg/source/detail?spec=svn588&r=544
Comment 8 Richard Purdie 2010-12-22 10:35:22 UTC
This should be fixed in http://git.pokylinux.org/cgit.cgi/poky/commit/?id=b1a2255b2d7f72ec2a9a196bfe5fc922e684446b. Wasn't a simple problem and a straight update of opkg didn't solve the problem, see the commit for more info.
Comment 9 Yi Zhao 2010-12-27 18:49:22 UTC
With the arm sdk toolchain from autobuilder,
http://autobuilder.pokylinux.org/nightly/20101225-1/toolchain/x86_64/poky-eglibc-x86_64-arm-toolchain-sdk-0.9+snapshot-20101227.tar.bz2, there is no this issue.

But g77 and gfortran are empty sysmbolic links, since there are not arm-poky-linux-gnueabi-g77 and arm-poky-linux-gnueabi-gfortran. Do we need to remove these?

####################
 
g77 -> /opt/poky/0.9+snapshot/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-poky-linux-gnueabi-g77

gfortran -> /opt/poky/0.9+snapshot/sysroots/x86_64-pokysdk-linux/usr/bin/armv5te-poky-linux-gnueabi/arm-poky-linux-gnueabi-gfortran

####################
Comment 10 Yi Zhao 2011-02-17 18:21:26 UTC
VERIFIED it.