Bug 604 - [toolchain]Build c program failed with arm toolchain
Summary: [toolchain]Build c program failed with arm toolchain
Status: VERIFIED FIXED
Alias: None
Product: Meta-yocto
Classification: Build System, Metadata & Runtime
Component: meta-yocto (show other bugs)
Version: 1.0
Hardware: x86 arm
: High major
Target Milestone: 1.0 M3
Assignee: Nitin Kamble
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2010-12-20 01:31 UTC by Yi Zhao
Modified: 2011-02-20 21:12 UTC (History)
9 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified: Program Management
Documentation change: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.