Bug 1418

Summary: x32 libatomics-ops build fails
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Nitin Kamble <nitin.a.kamble>
Component: coreAssignee: Nitin Kamble <nitin.a.kamble>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: Medium CC: hjl.tools, meta.mr.watcher, meta.watcher, sgw
Version: unspecified   
Target Milestone: 1.2   
Hardware: x86   
OS: x86_64   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: ---
Bug Depends on:    
Bug Blocks: 1579    

Description Nitin Kamble 2011-08-25 15:49:06 UTC
ERROR: Function 'do_compile' failed (see /disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/temp/log.do_compile.6887 for further information)
ERROR: Logfile of failure stored in: /disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/temp/log.do_compile.6887
Log data follows:
| DEBUG: SITE files ['endian-little', 'common-linux', 'common-glibc', 'bit-32', 'ix86-common', 'x86_64-linux-gnux32', 'common']
| NOTE: make -j 16
| Making all in src
| make[1]: Entering directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src'
| make  all-recursive
| make[2]: Entering directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src'
| Making all in atomic_ops
| make[3]: Entering directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src/atomic_ops'
| Making all in sysdeps
| make[4]: Entering directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src/atomic_ops/sysdeps'
| make[4]: Nothing to be done for `all'.
| make[4]: Leaving directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src/atomic_ops/sysdeps'
| make[4]: Entering directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src/atomic_ops'
| make[4]: Nothing to be done for `all-am'.
| make[4]: Leaving directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src/atomic_ops'
| make[3]: Leaving directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src/atomic_ops'
| make[3]: Entering directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src'
| ccache x86_64-poky-linux-gnux32-gcc   -mx32  --sysroot=/disk0/pokybuild/build-multilib-x32-qemu/tmp/sysroots/qemux86-64 -DHAVE_CONFIG_H -I.    -fPIC -O2 -pipe -g -feliminate-unused-debug-types -DNDEBUG -MT atomic_ops_stack.o -MD -MP -MF .deps/atomic_ops_stack.Tpo -c -o atomic_ops_stack.o atomic_ops_stack.c
| ccache x86_64-poky-linux-gnux32-gcc   -mx32  --sysroot=/disk0/pokybuild/build-multilib-x32-qemu/tmp/sysroots/qemux86-64 -DHAVE_CONFIG_H -I.    -fPIC -O2 -pipe -g -feliminate-unused-debug-types -DNDEBUG -MT atomic_ops_malloc.o -MD -MP -MF .deps/atomic_ops_malloc.Tpo -c -o atomic_ops_malloc.o atomic_ops_malloc.c
| atomic_ops/sysdeps/gcc/x86_64.h: Assembler messages:
| atomic_ops/sysdeps/gcc/x86_64.h:139: Error: incorrect register `%edx' used with `q' suffix
| atomic_ops/sysdeps/gcc/x86_64.h:139: Error: incorrect register `%ebx' used with `q' suffix
| atomic_ops/sysdeps/gcc/x86_64.h:139: Error: incorrect register `%ebx' used with `q' suffix
| atomic_ops/sysdeps/gcc/x86_64.h:139: Error: incorrect register `%ecx' used with `q' suffix
| make[3]: *** [atomic_ops_stack.o] Error 1
| make[3]: *** Waiting for unfinished jobs....
| atomic_ops_malloc.c: In function 'msb':
| atomic_ops_malloc.c:223:2: warning: right shift count >= width of type [enabled by default]
| atomic_ops/sysdeps/gcc/x86_64.h: Assembler messages:
| atomic_ops/sysdeps/gcc/x86_64.h:139: Error: incorrect register `%edx' used with `q' suffix
| atomic_ops/sysdeps/gcc/x86_64.h:139: Error: incorrect register `%ecx' used with `q' suffix
| make[3]: *** [atomic_ops_malloc.o] Error 1
| make[3]: Leaving directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src'
| make[2]: *** [all-recursive] Error 1
| make[2]: Leaving directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src'
| make[1]: *** [all] Error 2
| make[1]: Leaving directory `/disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/libatomic_ops-1.2/src'
| make: *** [all-recursive] Error 1
| ERROR: oe_runmake failed
| ERROR: Function 'do_compile' failed (see /disk0/pokybuild/build-multilib-x32-qemu/tmp/work/x86_64-x32-poky-linux-gnux32/libatomics-ops-1.2-r5/temp/log.do_compile.6887 for further information)
NOTE: package libatomics-ops-1.2-r5: task do_compile: Failed
Comment 1 Nitin Kamble 2011-12-01 15:08:13 UTC
Have a fix for this issue in my local branch, will push it soon.
Nitin
Comment 2 Nitin Kamble 2011-12-15 09:14:06 UTC
This commit in the master fixes the issue:

commit e3a384578f677c05d812d99c2c92aa13670bd06a
Author: Nitin A Kamble <nitin.a.kamble@intel.com>
Date:   Fri Dec 2 12:20:09 2011 -0800

    libatomics-ops: patch source code for x32
    
    This Fixes bug: [YOCTO #1418]
    
    Remove the `q' suffix on x86-64 atomic instructions.
    
    We don't need the `q' suffix on x86_64 atomic instructions for AO_t,
    which is defined as "unsigned long".  "unsigned long" is 32bit for x32
    and 64bit for x86-64. The register operand in x86-64 atomic instructions
    is sufficient to properly determine the register size.
    
    (From OE-Core rev: daaaeb1bd1467a2bed75722ce3ff35be970402e0)
    
    Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>