recipe fixes for x32 toolchain
cover recipe fixes for x32 toolchain
From: Nitin A Kamble <[email protected]>
These commits fixes building of various recipes with x32 toolchain for x32 target/machines. And these do not affect these recipes for other non-x32 targets.
X32 is new ABI for x86-64 architecture.
For more information refer: https://sites.google.com/site/x32abi/
Thanks,
Nitin
The following changes since commit 9be6d59b78510443d0944513503d515df13caa45:
dpkg-native: Fix perl path (2011-12-02 15:31:08 +0000)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib nitin/x32
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=nitin.x32
Nitin A Kamble (11):
gst-fluendo-mpegdemux: rework the CC hack
mdadm: fix CC definition in the Makefile openssl-1.0.0e: fix to wotk with x32 toolchain
gmp: fix the recipe for x32 target
mesa-dri, mesa-xlib: fix compilation with x32 toolchain glib-2.0: fix compilatoin with x32 toolchain
libxt: fix compilatoin with x32 toolchain
liboil: patch source code for x32
xproto: fix compilation with x32 toolchain
libaio: patch source code for x32
libatomics-ops: patch source code for x32
.../openssl-1.0.0e/openssl_fix_for_x32.patch | 90 ++++++++ meta/recipes-connectivity/openssl/openssl.inc | 15 +- .../recipes-connectivity/openssl/openssl_1.0.0e.bb | 3 +- .../glib-2.0/glib-2.0/glib-2.0_fix_for_x32.patch | 76 +++++++ meta/recipes-core/glib-2.0/glib-2.0_2.30.1.bb | 3 +- .../libaio/libaio/libaio_fix_for_x32.patch | 61 ++++++ meta/recipes-extended/libaio/libaio_0.3.109.bb | 5 +- .../mdadm/files/mdadm_fix_for_x32.patch | 24 ++ meta/recipes-extended/mdadm/mdadm_3.2.2.bb | 3 +- meta/recipes-graphics/mesa/mesa-7.11.inc | 11 +- meta/recipes-graphics/mesa/mesa-common.inc | 2 - meta/recipes-graphics/mesa/mesa-dri_7.11.bb | 2 +- meta/recipes-graphics/mesa/mesa-git.inc | 6 +- meta/recipes-graphics/mesa/mesa-xlib_7.11.bb | 2 +- .../mesa/mesa/mesa_fix_for_x32.patch | 24 ++ .../xorg-lib/libxt/libxt_fix_for_x32.patch | 19 ++ meta/recipes-graphics/xorg-lib/libxt_1.1.1.bb | 4 +- .../xorg-proto/xproto/xproto_fix_for_x32.patch | 22 ++ meta/recipes-graphics/xorg-proto/xproto_7.0.22.bb | 4 +- meta/recipes-multimedia/gstreamer/gst-fluendo.inc | 2 +- .../libatomics-ops_fix_for_x32.patch | 41 ++++ .../pulseaudio/libatomics-ops_1.2.bb | 5 +- meta/recipes-support/gmp/gmp/gmp_bugfix.patch | 94 ++++++++ meta/recipes-support/gmp/gmp/gmp_fix_for_x32.patch | 45 ++++ meta/recipes-support/gmp/gmp_5.0.2.bb | 6 +- .../liboil/liboil-0.3.17/liboil_fix_for_x32.patch | 222 ++++++++++++++++++++ meta/recipes-support/liboil/liboil_0.3.17.bb | 3 +- 27 files changed, 762 insertions(+), 32 deletions(-) create mode 100644 meta/recipes-connectivity/openssl/openssl-1.0.0e/openssl_fix_for_x32.patch create mode 100644 meta/recipes-core/glib-2.0/glib-2.0/glib-2.0_fix_for_x32.patch create mode 100644 meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch create mode 100644 meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch create mode 100644 meta/recipes-graphics/mesa/mesa/mesa_fix_for_x32.patch create mode 100644 meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch create mode 100644 meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch create mode 100644 meta/recipes-multimedia/pulseaudio/libatomics-ops/libatomics-ops_fix_for_x32.patch create mode 100644 meta/recipes-support/gmp/gmp/gmp_bugfix.patch create mode 100644 meta/recipes-support/gmp/gmp/gmp_fix_for_x32.patch create mode 100644 meta/recipes-support/liboil/liboil-0.3.17/liboil_fix_for_x32.patch
Signature · 1 line
1.7.6.4
PATCH 1/11 gst-fluendo-mpegdemux: rework the CC hack
From: Nitin A Kamble <[email protected]>
This fixes bug: [YOCTO #1403]
Earlier hack was breaking compiler parameters set by tune settings. And that caused x32 build failure. Now previous CC parameters are kept intact while adding new -L parameter.
--- meta/recipes-multimedia/gstreamer/gst-fluendo.inc | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
meta/recipes-multimedia/gstreamer/gst-fluendo.inc +1 -1
@@ -14,5 +14,5 @@ FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a" EXTRA_OECONF = "--disable-debug --disable-valgrind" # Hack to get STAGING_LIBDIR into the linker path when building -CC = "${CCACHE} ${HOST_PREFIX}gcc -L${STAGING_LIBDIR}" +CC += "-L${STAGING_LIBDIR}"
Signature · 1 line
1.7.6.4
PATCH 2/11 mdadm: fix CC definition in the Makefile
From: Nitin A Kamble <[email protected]>
By hardcoding CC's definition in the Makefile, all the gcc parameters set by tune settings are lost. Causing compile failure with x32 toolchain
As the bitbake defined CC is good, there is no need to redfine CC in the make file, hence removed it to fix the issue.
This fixes bug: [YOCTO #1414]
--- .../mdadm/files/mdadm_fix_for_x32.patch | 24 ++++++++++++++++++++ meta/recipes-extended/mdadm/mdadm_3.2.2.bb | 3 +- 2 files changed, 26 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch new file +24 -0
@@ -0,0 +1,24 @@ +UpstreamStatus: pending + +By hardcoding CC's definition in the Makefile, all the gcc parameters +set by tune settings are lost. Causing compile failure with x32 toolchain + +As the bitbake defined CC is good, there is no need to redfine CC in the +make file, hence removed it to fix the issue. + +Signed-Off-By: Nitin A Kamble <[email protected]> +2011/12/01 + +Index: mdadm-3.2.2/Makefile +=================================================================== +--- mdadm-3.2.2.orig/Makefile ++++ mdadm-3.2.2/Makefile +@@ -40,7 +40,7 @@ KLIBC=/home/src/klibc/klibc-0.77 + + KLIBC_GCC = gcc -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32 + +-CC = $(CROSS_COMPILE)gcc ++#CC = $(CROSS_COMPILE)gcc + CXFLAGS = -ggdb + CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter + ifdef WARN_UNUSED
meta/recipes-extended/mdadm/mdadm_3.2.2.bb +2 -1
@@ -8,10 +8,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \ file://mdmon.c;beginline=4;endline=18;md5=af7d8444d9c4d3e5c7caac0d9d34039d \ file://mdadm.h;beglinlne=4;endline=22;md5=462bc9936ac0d3da110191a3f9994161" -PR = "r2" +PR = "r3" SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.bz2 \ file://0001-mdadm-fix-build-failures-ppc64.patch \ + file://mdadm_fix_for_x32.patch \ " SRC_URI[md5sum] = "12ee2fbf3beddb60601fb7a4c4905651"
Signature · 1 line
1.7.6.4
Re: [PATCH 02/11] mdadm: fix CC definition in the Makefile
Dear Nitin,
thank you for your patch.
Am Freitag, den 02.12.2011, 12:20 -0800 schrieb [email protected]:
Quoted 6 lines
From: Nitin A Kamble <[email protected]>
By hardcoding CC's definition in the
Makefile, all the gcc parameters set by tune settings are lost. Causing compile failure with x32 toolchainAs the bitbake defined CC is good, there is no need to redfine CC in the
red*e*fine
Quoted 28 lines
make file, hence removed it to fix the issue.
This fixes bug: [YOCTO #1414]
Signed-off-by Nitin A Kamble <[email protected]>--- .../mdadm/files/mdadm_fix_for_x32.patch | 24 ++++++++++++++++++++ meta/recipes-extended/mdadm/mdadm_3.2.2.bb | 3 +- 2 files changed, 26 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patchmeta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch new file +11
-0@@ -0,0 +1,24 @@ +UpstreamStatus: pending + +By hardcoding CC's definition in the Makefile, all the gcc parameters +set by tune settings are lost. Causing compile failure with x32 toolchain + +As the bitbake defined CC is good, there is no need to redfine CC in the +make file, hence removed it to fix the issue. + +Signed-Off-By: Nitin A Kamble <[email protected]> +2011/12/01 +
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch line 21
Quoted 10 lines
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch new file +10
-0+Index: mdadm-3.2.2/Makefile +=================================================================== +--- mdadm-3.2.2.orig/Makefile ++++ mdadm-3.2.2/Makefile +@@ -40,7 +40,7 @@ KLIBC=/home/src/klibc/klibc-0.77 + + KLIBC_GCC = gcc -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32 + +-CC = $(CROSS_COMPILE)gcc ++#CC = $(CROSS_COMPILE)gcc
I would prefer to fix this the way it can be applied upstream. I could even ask them to apply it.
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch line 24
Quoted 3 lines
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch new file +3
-0+ CXFLAGS = -ggdb + CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter + ifdef WARN_UNUSED
[…]
Thanks,
Paul
Re: [PATCH 02/11] mdadm: fix CC definition in the Makefile
Paul,
Thanks for your feedback. I will try to incorporate your feedback in the commit.
Thanks,
Nitin
Quoted 87 lines
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Paul Menzel
Sent: Saturday, December 03, 2011 10:08 AM
To: [email protected]
Subject: Re: [OE-core] [PATCH 02/11] mdadm: fix CC definition in theMakefileDear Nitin,
thank you for your patch.
Am Freitag, den 02.12.2011, 12:20 -0800 schrieb
[email protected]:Quoted 8 lines
From: Nitin A Kamble <[email protected]>
By hardcoding CC's definition in the
Makefile, all the gcc parameters set by tune settings are lost. Causing compile failure with x32 toolchainAs the bitbake defined CC is good, there is no need to redfine CC in the
red*e*fine
Quoted 7 lines
make file, hence removed it to fix the issue.
This fixes bug: [YOCTO #1414]
Signed-off-by Nitin A Kamble <[email protected]>--- .../mdadm/files/mdadm_fix_for_x32.patch | 24++++++++++++++++++++
Quoted 2 lines
meta/recipes-extended/mdadm/mdadm_3.2.2.bb | 3 +- 2 files changed, 26 insertions(+), 1 deletions(-) create mode100644
Review
Quoted 3 lines
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch(quoted diff) +0
-0
extended/mdadm/files/mdadm_fix_for_x32.patchmeta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch line 3
Quoted 9 lines
b/meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patchnew file mode 100644
index 0000000..898e70bmeta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch new file +3
-0@@ -0,0 +1,24 @@ +UpstreamStatus: pending + +By hardcoding CC's definition in the Makefile, all the gccparameters
Quoted 11 lines
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch new file +11
-0+set by tune settings are lost. Causing compile failure with x32 +toolchain + +As the bitbake defined CC is good, there is no need to redfine CC in +the make file, hence removed it to fix the issue. + +Signed-Off-By: Nitin A Kamble <[email protected]> +2011/12/01 + +Index: mdadm-3.2.2/Makefile +===================================================================meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch line 21
Quoted 10 lines
meta/recipes-extended/mdadm/files/mdadm_fix_for_x32.patch new file +10
-0+--- mdadm-3.2.2.orig/Makefile ++++ mdadm-3.2.2/Makefile +@@ -40,7 +40,7 @@ KLIBC=/home/src/klibc/klibc-0.77 + + KLIBC_GCC = gcc -nostdinc -iwithprefix include + -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include + -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32 + +-CC = $(CROSS_COMPILE)gcc ++#CC = $(CROSS_COMPILE)gccI would prefer to fix this the way it can be applied upstream. I could even ask them to apply it.
Quoted 3 lines
+ CXFLAGS = -ggdb
+ CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra
+ -Wno-unused-parameter ifdefWARN_UNUSED[…]
Thanks,
Paul
PATCH 3/11 openssl-1.0.0e: fix to wotk with x32 toolchain
In reply to [email protected]From: Nitin A Kamble <[email protected]>
Add BN_ADDR for address type instead of using BN_ULONG or unsigned long:
1. For W64, address type is unsigned long long, not unsigned long.
2. For x32, address type is unsigned long , not BN_ULONG.
Added a new targetlinux-x32 in the config file
The do_install() code to move lib/* to lib64 is not needed now with the enhanced multilib support.
Make the x86-64 assembly syntax compatible with x32 compiler.
--- .../openssl-1.0.0e/openssl_fix_for_x32.patch | 90 ++++++++++++++++++++ meta/recipes-connectivity/openssl/openssl.inc | 15 ++-- .../recipes-connectivity/openssl/openssl_1.0.0e.bb | 3 +- 3 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 meta/recipes-connectivity/openssl/openssl-1.0.0e/openssl_fix_for_x32.patch
meta/recipes-connectivity/openssl/openssl-1.0.0e/openssl_fix_for_x32.patch new file +90 -0
@@ -0,0 +1,90 @@ +UpstreamStatus: Pending + +Received from H J Liu @ Intel +Make the assembly syntax compatible with x32 gcc. Othewise x32 gcc throws errors. +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/07/13 + +ported the patch to the 1.0.0e version +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/12/01 +Index: openssl-1.0.0e/Configure +=================================================================== +--- openssl-1.0.0e.orig/Configure ++++ openssl-1.0.0e/Configure +@@ -393,6 +393,7 @@ my %table=( + "linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", ++"linux-x32", "gcc:-DL_ENDIAN -DTERMIO -O2 -pipe -g -feliminate-unused-debug-types -Wall -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-mx32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "linux-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", + #### SPARC Linux setups + # Ray Miller <[email protected]> has patiently +Index: openssl-1.0.0e/crypto/bn/asm/x86_64-gcc.c +=================================================================== +--- openssl-1.0.0e.orig/crypto/bn/asm/x86_64-gcc.c ++++ openssl-1.0.0e/crypto/bn/asm/x86_64-gcc.c +@@ -55,7 +55,7 @@ + * machine. + */ + +-#ifdef _WIN64 ++#if defined _WIN64 || !defined __LP64__ + #define BN_ULONG unsigned long long + #else + #define BN_ULONG unsigned long +@@ -192,9 +192,9 @@ BN_ULONG bn_add_words (BN_ULONG *rp, con + asm ( + " subq %2,%2 \n" + ".p2align 4 \n" +- "1: movq (%4,%2,8),%0 \n" +- " adcq (%5,%2,8),%0 \n" +- " movq %0,(%3,%2,8) \n" ++ "1: movq (%q4,%2,8),%0 \n" ++ " adcq (%q5,%2,8),%0 \n" ++ " movq %0,(%q3,%2,8) \n" + " leaq 1(%2),%2 \n" + " loop 1b \n" + " sbbq %0,%0 \n" +@@ -215,9 +215,9 @@ BN_ULONG bn_sub_words (BN_ULONG *rp, con + asm ( + " subq %2,%2 \n" + ".p2align 4 \n" +- "1: movq (%4,%2,8),%0 \n" +- " sbbq (%5,%2,8),%0 \n" +- " movq %0,(%3,%2,8) \n" ++ "1: movq (%q4,%2,8),%0 \n" ++ " sbbq (%q5,%2,8),%0 \n" ++ " movq %0,(%q3,%2,8) \n" + " leaq 1(%2),%2 \n" + " loop 1b \n" + " sbbq %0,%0 \n" +Index: openssl-1.0.0e/crypto/bn/bn.h +=================================================================== +--- openssl-1.0.0e.orig/crypto/bn/bn.h ++++ openssl-1.0.0e/crypto/bn/bn.h +@@ -172,6 +172,13 @@ extern "C" { + # endif + #endif + ++/* Address type. */ ++#ifdef _WIN64 ++#define BN_ADDR unsigned long long ++#else ++#define BN_ADDR unsigned long ++#endif ++ + /* assuming long is 64bit - this is the DEC Alpha + * unsigned long long is only 64 bits :-(, don't define + * BN_LLONG for the DEC Alpha */ +Index: openssl-1.0.0e/crypto/bn/bn_exp.c +=================================================================== +--- openssl-1.0.0e.orig/crypto/bn/bn_exp.c ++++ openssl-1.0.0e/crypto/bn/bn_exp.c +@@ -561,7 +561,7 @@ static int MOD_EXP_CTIME_COPY_FROM_PREBU + + /* Given a pointer value, compute the next address that is a cache line multiple. */ + #define MOD_EXP_CTIME_ALIGN(x_) \ +- ((unsigned char*)(x_) + (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - (((BN_ULONG)(x_)) & (MOD_EXP_CTIME_MIN_CACHE_LINE_MASK)))) ++ ((unsigned char*)(x_) + (MOD_EXP_CTIME_MIN_CACHE_LINE_WIDTH - (((BN_ADDR)(x_)) & (MOD_EXP_CTIME_MIN_CACHE_LINE_MASK)))) + + /* This variant of BN_mod_exp_mont() uses fixed windows and the special + * precomputation memory layout to limit data-dependency to a minimum
meta/recipes-connectivity/openssl/openssl.inc +6 -9
@@ -82,6 +82,12 @@ do_configure () { linux-i686) target=debian-i386-i686/cmov ;; + linux-gnux32-x86_64) + target=linux-x32 + ;; + linux-gnu64-x86_64) + target=linux-x86_64 + ;; linux-mips) target=debian-mips ;;
@@ -123,15 +129,6 @@ do_compile () { do_install () { oe_runmake INSTALL_PREFIX="${D}" MANDIR="${mandir}" install - # On x86_64, move lib/* to lib64 - if [ "${libdir}" != "${prefix}/lib" ] - then - install -m 0755 ${D}${libdir} ${D}${libdir}/pkgconfig - mv ${D}${prefix}/lib/lib* ${D}${libdir} - mv ${D}${prefix}/lib/pkgconfig/*.pc ${D}${libdir}/pkgconfig - chmod 644 ${D}${libdir}/pkgconfig/openssl.pc - fi - oe_libinstall -so libcrypto ${D}${libdir} oe_libinstall -so libssl ${D}${libdir}
meta/recipes-connectivity/openssl/openssl_1.0.0e.bb +2 -1
@@ -6,7 +6,7 @@ DEPENDS += "ocf-linux" CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS" -PR = "${INC_PR}.0" +PR = "${INC_PR}.2" LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8"
@@ -29,6 +29,7 @@ SRC_URI += "file://configure-targets.patch \ file://debian/pkg-config.patch \ file://debian/no-symbolic.patch \ file://debian/debian-targets.patch \ + file://openssl_fix_for_x32.patch \ " SRC_URI[md5sum] = "7040b89c4c58c7a1016c0dfa6e821c86"
Signature · 1 line
1.7.6.4
PATCH 4/11 gmp: fix the recipe for x32 target
In reply to [email protected]From: Nitin A Kamble <[email protected]>
Add support for building with x32 toolchain.
--- meta/recipes-support/gmp/gmp/gmp_bugfix.patch | 94 ++++++++++++++++++++ meta/recipes-support/gmp/gmp/gmp_fix_for_x32.patch | 45 +++++++++ meta/recipes-support/gmp/gmp_5.0.2.bb | 6 +- 3 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-support/gmp/gmp/gmp_bugfix.patch create mode 100644 meta/recipes-support/gmp/gmp/gmp_fix_for_x32.patch
meta/recipes-support/gmp/gmp/gmp_bugfix.patch new file +94 -0
@@ -0,0 +1,94 @@ +UpstreamStatus: Pending + +When LONG_MIN is passed to val, -val is undefined. This patch fixes +it. See for details: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50066 + +Received this patch from H.J. Lu <[email protected]> + +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/12/01 + +--- gmp-4.3.2/mpf/iset_si.c.ll 2010-01-07 12:09:03.000000000 -0800 ++++ gmp-4.3.2/mpf/iset_si.c 2011-11-30 16:42:35.827944358 -0800 +@@ -31,7 +31,7 @@ mpf_init_set_si (mpf_ptr r, long int val + r->_mp_prec = prec; + r->_mp_d = (mp_ptr) (*__gmp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB); + +- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); ++ vl = (mp_limb_t) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val); + + r->_mp_d[0] = vl & GMP_NUMB_MASK; + size = vl != 0; +--- gmp-4.3.2/mpf/set_si.c.ll 2010-01-07 12:09:03.000000000 -0800 ++++ gmp-4.3.2/mpf/set_si.c 2011-11-30 16:42:47.823878367 -0800 +@@ -27,7 +27,7 @@ mpf_set_si (mpf_ptr dest, long val) + mp_size_t size; + mp_limb_t vl; + +- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); ++ vl = (mp_limb_t) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val); + + dest->_mp_d[0] = vl & GMP_NUMB_MASK; + size = vl != 0; +--- gmp-4.3.2/mpz/cmp_si.c.ll 2010-01-07 12:09:03.000000000 -0800 ++++ gmp-4.3.2/mpz/cmp_si.c 2011-11-30 13:44:25.923319700 -0800 +@@ -27,7 +27,7 @@ _mpz_cmp_si (mpz_srcptr u, signed long i + { + mp_size_t usize = u->_mp_size; + mp_size_t vsize; +- mp_limb_t u_digit; ++ mp_limb_t u_digit, vl_digit; + + #if GMP_NAIL_BITS != 0 + /* FIXME. This isn't very pretty. */ +@@ -41,11 +41,14 @@ _mpz_cmp_si (mpz_srcptr u, signed long i + + vsize = 0; + if (v_digit > 0) +- vsize = 1; ++ { ++ vsize = 1; ++ vl_digit = (mp_limb_t) (unsigned long) v_digit; ++ } + else if (v_digit < 0) + { + vsize = -1; +- v_digit = -v_digit; ++ vl_digit = (mp_limb_t) -(unsigned long) v_digit; + } + + if (usize != vsize) +@@ -56,10 +59,10 @@ _mpz_cmp_si (mpz_srcptr u, signed long i + + u_digit = u->_mp_d[0]; + +- if (u_digit == (mp_limb_t) (unsigned long) v_digit) ++ if (u_digit == vl_digit) + return 0; + +- if (u_digit > (mp_limb_t) (unsigned long) v_digit) ++ if (u_digit > vl_digit) + return usize; + else + return -usize; +--- gmp-4.3.2/mpz/iset_si.c.ll 2010-01-07 12:09:03.000000000 -0800 ++++ gmp-4.3.2/mpz/iset_si.c 2011-11-30 13:44:25.924319695 -0800 +@@ -31,7 +31,7 @@ mpz_init_set_si (mpz_ptr dest, signed lo + dest->_mp_alloc = 1; + dest->_mp_d = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB); + +- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); ++ vl = (mp_limb_t) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val); + + dest->_mp_d[0] = vl & GMP_NUMB_MASK; + size = vl != 0; +--- gmp-4.3.2/mpz/set_si.c.ll 2010-01-07 12:09:03.000000000 -0800 ++++ gmp-4.3.2/mpz/set_si.c 2011-11-30 13:44:25.947319574 -0800 +@@ -27,7 +27,7 @@ mpz_set_si (mpz_ptr dest, signed long in + mp_size_t size; + mp_limb_t vl; + +- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); ++ vl = (mp_limb_t) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val); + + dest->_mp_d[0] = vl & GMP_NUMB_MASK; + size = vl != 0;
meta/recipes-support/gmp/gmp/gmp_fix_for_x32.patch new file +45 -0
45 lines not on this page · raw message
meta/recipes-support/gmp/gmp_5.0.2.bb +4 -2
@@ -2,10 +2,12 @@ require gmp.inc LICENSE="LGPLv3&GPLv3" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ file://version.c;endline=18;md5=d8c56b52b9092346b9f93b4da65ef790" -PR = "r2" +PR = "r3" SRC_URI_append += "file://sh4-asmfix.patch \ - file://use-includedir.patch " + file://gmp_bugfix.patch \ + file://use-includedir.patch \ + file://gmp_fix_for_x32.patch" export CC_FOR_BUILD = "${BUILD_CC}"
Signature · 1 line
1.7.6.4
PATCH 5/11 mesa-dri, mesa-xlib: fix compilation with x32 toolchain
In reply to [email protected]From: Nitin A Kamble <[email protected]>
Add support for building with x32 toolchain.
Simplified the use of SRC_URI & S vars across multiple files.
--- meta/recipes-graphics/mesa/mesa-7.11.inc | 11 ++++++-- meta/recipes-graphics/mesa/mesa-common.inc | 2 - meta/recipes-graphics/mesa/mesa-dri_7.11.bb | 2 +- meta/recipes-graphics/mesa/mesa-git.inc | 6 ++-- meta/recipes-graphics/mesa/mesa-xlib_7.11.bb | 2 +- .../mesa/mesa/mesa_fix_for_x32.patch | 24 ++++++++++++++++++++ 6 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 meta/recipes-graphics/mesa/mesa/mesa_fix_for_x32.patch
meta/recipes-graphics/mesa/mesa-7.11.inc +8 -3
@@ -1,9 +1,14 @@ DEPENDS += "mesa-dri-glsl-native" -SRC_URI += "file://uclibc.patch \ - file://crossfix.patch \ - file://crossfix-mklib.patch \ + +SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \ + file://uclibc.patch \ + file://crossfix.patch \ + file://crossfix-mklib.patch \ + file://mesa_fix_for_x32.patch \ " +S = "${WORKDIR}/Mesa-${PV}" + SRC_URI[md5sum] = "ff03aca82d0560009a076a87c888cf13" SRC_URI[sha256sum] = "f8bf37a00882840a3e3d327576bc26a79ae7f4e18fe1f7d5f17a5b1c80dd7acf"
meta/recipes-graphics/mesa/mesa-common.inc +0 -2
@@ -15,8 +15,6 @@ LIC_FILES_CHKSUM = "file://docs/license.html;md5=7a3373c039b6b925c427755a4f779c1 INC_PR = "r13" PE = "2" -SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2" -S = "${WORKDIR}/Mesa-${PV}" PROTO_DEPS = "xf86driproto glproto" LIB_DEPS = "virtual/libx11 libxext libxxf86vm libxdamage libxfixes libxml2-native"
meta/recipes-graphics/mesa/mesa-dri_7.11.bb +1 -1
@@ -1,4 +1,4 @@ include mesa-common.inc include mesa-${PV}.inc include mesa-dri.inc -PR = "${INC_PR}.0" +PR = "${INC_PR}.1"
meta/recipes-graphics/mesa/mesa-git.inc +3 -3
@@ -6,9 +6,9 @@ PV = "7.11+gitr${SRCPV}" LIC_FILES_CHKSUM = "file://docs/license.html;md5=03ccdc4c379c4289aecfb8892c546f67" FILESEXTRAPATHS_prepend := "${THISDIR}/mesa-git:" -SRC_URI = "git://anongit.freedesktop.org/git/mesa/mesa;protocol=git" -SRC_URI += "file://uclibc.patch \ - file://crossfix.patch \ +SRC_URI = "git://anongit.freedesktop.org/git/mesa/mesa;protocol=git \ + file://uclibc.patch \ + file://crossfix.patch \ " S = "${WORKDIR}/git"
meta/recipes-graphics/mesa/mesa-xlib_7.11.bb +1 -1
@@ -1,5 +1,5 @@ include mesa-common.inc include mesa-${PV}.inc include mesa-xlib.inc -PR = "${INC_PR}.0" +PR = "${INC_PR}.1"
meta/recipes-graphics/mesa/mesa/mesa_fix_for_x32.patch new file +24 -0
@@ -0,0 +1,24 @@ +UpstreamStatus: Pending + +get correct compiler options for x32 gcc. + +Received this patch from H.J. Lu <[email protected]> + +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/12/01 + +--- Mesa-7.11/bin/mklib.x32 2011-11-30 14:29:14.976465283 -0800 ++++ Mesa-7.11/bin/mklib 2011-11-30 14:32:48.591525193 -0800 +@@ -335,7 +335,12 @@ case $ARCH in + set ${OBJECTS} + ABI32=`file $1 | grep 32-bit` + if [ "${ABI32}" -a `uname -m` = "x86_64" ] ; then +- OPTS="-m32 ${OPTS}" ++ ABIX32=`file $1 | grep x86-64` ++ if [ "${ABI32}" ]; then ++ OPTS="-mx32 ${OPTS}" ++ else ++ OPTS="-m32 ${OPTS}" ++ fi + fi + + if [ "${ALTOPTS}" ] ; then
Signature · 1 line
1.7.6.4
PATCH 6/11 glib-2.0: fix compilatoin with x32 toolchain
In reply to [email protected]From: Nitin A Kamble <[email protected]>
Pass along CC & CFLAGS vars so that the tune parameters set get used. This fixes compilation with x32 toolchain.
--- .../glib-2.0/glib-2.0/glib-2.0_fix_for_x32.patch | 76 ++++++++++++++++++++ meta/recipes-core/glib-2.0/glib-2.0_2.30.1.bb | 3 +- 2 files changed, 78 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-core/glib-2.0/glib-2.0/glib-2.0_fix_for_x32.patch
meta/recipes-core/glib-2.0/glib-2.0/glib-2.0_fix_for_x32.patch new file +76 -0
@@ -0,0 +1,76 @@ +UpstreamStatus: Pending + +Pass CC & CFLAGS vars so that tune parameters get used. +This fixes compilation with x32 toolchain. + +Received this patch from H.J. Lu <[email protected]> +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/07/13 + +Index: glib-2.30.0/glib/Makefile.am +=================================================================== +--- glib-2.30.0.orig/glib/Makefile.am ++++ glib-2.30.0/glib/Makefile.am +@@ -359,10 +359,10 @@ INSTALL_PROGS= + + if ENABLE_DTRACE + glib_probes.h: glib_probes.d Makefile +- $(AM_V_GEN) $(DTRACE) -C -h -s $< -o [email protected] ++ $(AM_V_GEN) CFLAGS="$(CFLAGS)" $(DTRACE) -C -h -s $< -o [email protected] + @$(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES," < [email protected] > $@ && rm -f [email protected] + glib_probes.o: glib_probes.d Makefile +- $(AM_V_GEN) $(DTRACE) -G -s $< -o $@ ++ $(AM_V_GEN) CFLAGS="$(CFLAGS)" $(DTRACE) -G -s $< -o $@ + BUILT_SOURCES += glib_probes.h glib_probes.o + CLEANFILES += glib_probes.h glib_probes.h.tmp + libglib_2_0_la_LIBADD += glib_probes.o +Index: glib-2.30.0/glib/Makefile.in +=================================================================== +--- glib-2.30.0.orig/glib/Makefile.in ++++ glib-2.30.0/glib/Makefile.in +@@ -1691,10 +1691,10 @@ uninstall-local: uninstall-ms-lib uninst + @OS_WIN32_AND_DLL_COMPILATION_FALSE@uninstall-def-file: + + @ENABLE_DTRACE_TRUE@glib_probes.h: glib_probes.d Makefile +-@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) $(DTRACE) -C -h -s $< -o [email protected] ++@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) -C -h -s $< -o [email protected] + @ENABLE_DTRACE_TRUE@ @$(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES," < [email protected] > $@ && rm -f [email protected] + @ENABLE_DTRACE_TRUE@glib_probes.o: glib_probes.d Makefile +-@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) $(DTRACE) -G -s $< -o $@ ++@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) -G -s $< -o $@ + + gspawn-win32-helper-console.c: + echo '#define HELPER_CONSOLE' >$@ +Index: glib-2.30.0/gobject/Makefile.am +=================================================================== +--- glib-2.30.0.orig/gobject/Makefile.am ++++ glib-2.30.0/gobject/Makefile.am +@@ -141,10 +141,10 @@ gobject_c_sources = \ + + if ENABLE_DTRACE + gobject_probes.h: gobject_probes.d Makefile +- $(AM_V_GEN) $(DTRACE) -C -h -s $< -o [email protected] ++ $(AM_V_GEN) CFLAGS="$(CFLAGS)" $(DTRACE) -C -h -s $< -o [email protected] + @$(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES," < [email protected] > $@ && rm -f [email protected] + gobject_probes.o: gobject_probes.d Makefile +- $(AM_V_GEN) $(DTRACE) -G -s $< -o $@ ++ $(AM_V_GEN) CFLAGS="$(CFLAGS)" $(DTRACE) -G -s $< -o $@ + BUILT_SOURCES += gobject_probes.h gobject_probes.o + CLEANFILES += gobject_probes.h + libgobject_2_0_la_LIBADD += gobject_probes.o +Index: glib-2.30.0/gobject/Makefile.in +=================================================================== +--- glib-2.30.0.orig/gobject/Makefile.in ++++ glib-2.30.0/gobject/Makefile.in +@@ -1581,10 +1581,10 @@ uninstall-ms-lib: + @OS_WIN32_AND_DLL_COMPILATION_FALSE@uninstall-def-file: + + @ENABLE_DTRACE_TRUE@gobject_probes.h: gobject_probes.d Makefile +-@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) $(DTRACE) -C -h -s $< -o [email protected] ++@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) CFLAGS="$(CFLAGS)" $(DTRACE) -C -h -s $< -o [email protected] + @ENABLE_DTRACE_TRUE@ @$(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES," < [email protected] > $@ && rm -f [email protected] + @ENABLE_DTRACE_TRUE@gobject_probes.o: gobject_probes.d Makefile +-@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) $(DTRACE) -G -s $< -o $@ ++@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) CFLAGS="$(CFLAGS)" $(DTRACE) -G -s $< -o $@ + + # This is read by gobject-introspection/misc/ and gtk-doc + gobject-public-headers.txt: Makefile
meta/recipes-core/glib-2.0/glib-2.0_2.30.1.bb +2 -1
@@ -1,6 +1,6 @@ require glib.inc -PR = "r0" +PR = "r1" PE = "1" DEPENDS += "libffi python-argparse-native"
@@ -13,6 +13,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.bz2 \ file://configure-libtool.patch \ file://60_wait-longer-for-threads-to-die.patch \ file://g_once_init_enter.patch \ + file://glib-2.0_fix_for_x32.patch \ " SRC_URI[md5sum] = "921ef2e86e911feb5e21f656f1ac305b" SRC_URI[sha256sum] = "4e560319450f31d85b6cdb2b530c3324a510ca04817e360943d0774327d21804"
Signature · 1 line
1.7.6.4
PATCH 7/11 libxt: fix compilatoin with x32 toolchain
In reply to [email protected]From: Nitin A Kamble <[email protected]>
This fixes compilation with x32 toolchain.
--- .../xorg-lib/libxt/libxt_fix_for_x32.patch | 19 +++++++++++++++++++ meta/recipes-graphics/xorg-lib/libxt_1.1.1.bb | 4 +++- 2 files changed, 22 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch
meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch new file +19 -0
@@ -0,0 +1,19 @@ +UpstreamStatus: Pending + +This fixes compilation with x32 toolchain. + +Received this patch from H.J. Lu <[email protected]> +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/12/1 + + +--- libXt-1.1.1/include/X11/Xtos.h.x32 2011-02-08 07:56:40.000000000 -0800 ++++ libXt-1.1.1/include/X11/Xtos.h 2011-11-30 17:19:27.473349770 -0800 +@@ -62,7 +62,7 @@ SOFTWARE. + defined(__sparc64__) || \ + defined(__s390x__) || \ + (defined(__hppa__) && defined(__LP64__)) || \ +- defined(__amd64__) || defined(amd64) || \ ++ ((defined(__amd64__) || defined(amd64)) && defined(__LP64__)) || \ + defined(__powerpc64__) || \ + (defined(sgi) && (_MIPS_SZLONG == 64)) + #define LONG64
meta/recipes-graphics/xorg-lib/libxt_1.1.1.bb +3 -1
@@ -19,11 +19,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3239170e81427c5948287df07691f03f" DEPENDS += "util-linux libxcb libsm virtual/libx11 kbproto libxdmcp" PROVIDES = "xt" -PR = "r0" +PR = "r1" PE = "1" XORG_PN = "libXt" +SRC_URI += "file://libxt_fix_for_x32.patch" + BBCLASSEXTEND = "native" EXTRA_OECONF += "--disable-install-makestrs --disable-xkb"
Signature · 1 line
1.7.6.4
PATCH 8/11 liboil: patch source code for x32
In reply to [email protected]From: Nitin A Kamble <[email protected]>
Make the assembly syntax compatible with x32 gcc. Othewise x32 gcc throws errors.
This Fixes bug: [YOCTO #1412]
--- .../liboil/liboil-0.3.17/liboil_fix_for_x32.patch | 222 ++++++++++++++++++++ meta/recipes-support/liboil/liboil_0.3.17.bb | 3 +- 2 files changed, 224 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-support/liboil/liboil-0.3.17/liboil_fix_for_x32.patch
meta/recipes-support/liboil/liboil-0.3.17/liboil_fix_for_x32.patch new file +222 -0
@@ -0,0 +1,222 @@ +Upstream-Status: Pending + +Make the assembly syntax compatible with x32 gcc. Othewise x32 gcc throws errors. + +Signed-Off-By: Nitin A Kamble <[email protected]> +2011/12/01 + + +Index: liboil-0.3.17/liboil/amd64/wavelet.c +=================================================================== +--- liboil-0.3.17.orig/liboil/amd64/wavelet.c ++++ liboil-0.3.17/liboil/amd64/wavelet.c +@@ -21,14 +21,14 @@ deinterleave2_asm (int16_t *d1, int16_t + asm volatile ("\n" + " sub $2, %%rcx\n" + "1:\n" +- " movw (%1,%%rcx,4), %%ax\n" +- " movw %%ax, (%0,%%rcx,2)\n" +- " movw 2(%1,%%rcx,4), %%ax\n" +- " movw %%ax, (%2,%%rcx,2)\n" +- " movw 4(%1,%%rcx,4), %%ax\n" +- " movw %%ax, 2(%0,%%rcx,2)\n" +- " movw 6(%1,%%rcx,4), %%ax\n" +- " movw %%ax, 2(%2,%%rcx,2)\n" ++ " movw (%q1,%%rcx,4), %%ax\n" ++ " movw %%ax, (%q0,%%rcx,2)\n" ++ " movw 2(%q1,%%rcx,4), %%ax\n" ++ " movw %%ax, (%q2,%%rcx,2)\n" ++ " movw 4(%q1,%%rcx,4), %%ax\n" ++ " movw %%ax, 2(%q0,%%rcx,2)\n" ++ " movw 6(%q1,%%rcx,4), %%ax\n" ++ " movw %%ax, 2(%q2,%%rcx,2)\n" + " sub $2, %%rcx\n" + " jge 1b\n" + : "+r" (d1), "+r" (s_2xn), "+r" (d2), "+c" (n) +@@ -53,20 +53,20 @@ deinterleave2_mmx (int16_t *d1, int16_t + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%1,%%rcx,4), %%mm0\n" +- " movq 8(%1,%%rcx,4), %%mm1\n" ++ " movq (%q1,%%rcx,4), %%mm0\n" ++ " movq 8(%q1,%%rcx,4), %%mm1\n" + " pslld $16, %%mm0\n" + " pslld $16, %%mm1\n" + " psrad $16, %%mm0\n" + " psrad $16, %%mm1\n" + " packssdw %%mm1, %%mm0\n" +- " movq %%mm0, (%0,%%rcx,2)\n" +- " movq (%1,%%rcx,4), %%mm0\n" +- " movq 8(%1,%%rcx,4), %%mm1\n" ++ " movq %%mm0, (%q0,%%rcx,2)\n" ++ " movq (%q1,%%rcx,4), %%mm0\n" ++ " movq 8(%q1,%%rcx,4), %%mm1\n" + " psrad $16, %%mm0\n" + " psrad $16, %%mm1\n" + " packssdw %%mm1, %%mm0\n" +- " movq %%mm0, (%2,%%rcx,2)\n" ++ " movq %%mm0, (%q2,%%rcx,2)\n" + " add $4, %%rcx\n" + " cmp %3, %%ecx\n" + " jl 1b\n" +@@ -93,10 +93,10 @@ deinterleave2_mmx_2 (int16_t *d1, int16_ + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " pshufw $0xd8, (%1,%%rcx,4), %%mm0\n" +- " movd %%mm0, (%0,%%rcx,2)\n" +- " pshufw $0x8d, (%1,%%rcx,4), %%mm0\n" +- " movd %%mm0, (%2,%%rcx,2)\n" ++ " pshufw $0xd8, (%q1,%%rcx,4), %%mm0\n" ++ " movd %%mm0, (%q0,%%rcx,2)\n" ++ " pshufw $0x8d, (%q1,%%rcx,4), %%mm0\n" ++ " movd %%mm0, (%q2,%%rcx,2)\n" + " add $2, %%rcx\n" + " cmp %3, %%ecx\n" + " jl 1b\n" +@@ -123,16 +123,16 @@ deinterleave2_mmx_3 (int16_t *d1, int16_ + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%1,%%rcx,4), %%mm1\n" +- " movq (%1,%%rcx,4), %%mm2\n" +- " movq 8(%1,%%rcx,4), %%mm0\n" ++ " movq (%q1,%%rcx,4), %%mm1\n" ++ " movq (%q1,%%rcx,4), %%mm2\n" ++ " movq 8(%q1,%%rcx,4), %%mm0\n" + " punpcklwd %%mm0, %%mm1\n" + " punpckhwd %%mm0, %%mm2\n" + " movq %%mm1, %%mm0\n" + " punpcklwd %%mm2, %%mm0\n" + " punpckhwd %%mm2, %%mm1\n" +- " movq %%mm0, (%0,%%rcx,2)\n" +- " movq %%mm1, (%2,%%rcx,2)\n" ++ " movq %%mm0, (%q0,%%rcx,2)\n" ++ " movq %%mm1, (%q2,%%rcx,2)\n" + " add $4, %%rcx\n" + " cmp %3, %%ecx\n" + " jl 1b\n" +@@ -159,26 +159,26 @@ deinterleave2_mmx_4 (int16_t *d1, int16_ + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%1,%%rcx,4), %%mm1\n" ++ " movq (%q1,%%rcx,4), %%mm1\n" + " movq %%mm1, %%mm2\n" +- " movq 8(%1,%%rcx,4), %%mm0\n" +- " movq 16(%1,%%rcx,4), %%mm5\n" ++ " movq 8(%q1,%%rcx,4), %%mm0\n" ++ " movq 16(%q1,%%rcx,4), %%mm5\n" + " punpcklwd %%mm0, %%mm1\n" + " movq %%mm5, %%mm6\n" + " punpckhwd %%mm0, %%mm2\n" +- " movq 24(%1,%%rcx,4), %%mm4\n" ++ " movq 24(%q1,%%rcx,4), %%mm4\n" + " movq %%mm1, %%mm0\n" + " punpcklwd %%mm4, %%mm5\n" + " punpcklwd %%mm2, %%mm0\n" + " punpckhwd %%mm4, %%mm6\n" + " punpckhwd %%mm2, %%mm1\n" + " movq %%mm5, %%mm4\n" +- " movq %%mm0, (%0,%%rcx,2)\n" ++ " movq %%mm0, (%q0,%%rcx,2)\n" + " punpcklwd %%mm6, %%mm4\n" +- " movq %%mm1, (%2,%%rcx,2)\n" ++ " movq %%mm1, (%q2,%%rcx,2)\n" + " punpckhwd %%mm6, %%mm5\n" +- " movq %%mm4, 8(%0,%%rcx,2)\n" +- " movq %%mm5, 8(%2,%%rcx,2)\n" ++ " movq %%mm4, 8(%q0,%%rcx,2)\n" ++ " movq %%mm5, 8(%q2,%%rcx,2)\n" + " add $8, %%rcx\n" + " cmp %3, %%ecx\n" + " jl 1b\n" +@@ -252,13 +252,13 @@ interleave2_mmx (int16_t *d_2xn, int16_t + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%1,%%rcx,2), %%mm0\n" +- " movq (%2,%%rcx,2), %%mm1\n" ++ " movq (%q1,%%rcx,2), %%mm0\n" ++ " movq (%q2,%%rcx,2), %%mm1\n" + " movq %%mm0, %%mm2\n" + " punpckhwd %%mm1, %%mm0\n" + " punpcklwd %%mm1, %%mm2\n" +- " movq %%mm2, (%0,%%rcx,4)\n" +- " movq %%mm0, 8(%0,%%rcx,4)\n" ++ " movq %%mm2, (%q0,%%rcx,4)\n" ++ " movq %%mm0, 8(%q0,%%rcx,4)\n" + " add $4, %%rcx\n" + " cmp %3, %%ecx\n" + " jl 1b\n" +@@ -285,12 +285,12 @@ lift_add_shift1_mmx (int16_t *d, int16_t + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%2,%%rcx,2), %%mm1\n" +- " movq (%3,%%rcx,2), %%mm2\n" ++ " movq (%q2,%%rcx,2), %%mm1\n" ++ " movq (%q3,%%rcx,2), %%mm2\n" + " paddw %%mm2, %%mm1\n" + " psraw $1, %%mm1\n" +- " paddw (%1,%%rcx,2), %%mm1\n" +- " movq %%mm1, (%0,%%rcx,2)\n" ++ " paddw (%q1,%%rcx,2), %%mm1\n" ++ " movq %%mm1, (%q0,%%rcx,2)\n" + " add $4, %%rcx\n" + " cmp %4, %%ecx\n" + " jl 1b\n" +@@ -317,13 +317,13 @@ lift_sub_shift1_mmx (int16_t *d, int16_t + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%2,%%rcx,2), %%mm1\n" +- " movq (%3,%%rcx,2), %%mm2\n" +- " movq (%1,%%rcx,2), %%mm0\n" ++ " movq (%q2,%%rcx,2), %%mm1\n" ++ " movq (%q3,%%rcx,2), %%mm2\n" ++ " movq (%q1,%%rcx,2), %%mm0\n" + " paddw %%mm2, %%mm1\n" + " psraw $1, %%mm1\n" + " psubw %%mm1, %%mm0\n" +- " movq %%mm0, (%0,%%rcx,2)\n" ++ " movq %%mm0, (%q0,%%rcx,2)\n" + " add $4, %%rcx\n" + " cmp %4, %%ecx\n" + " jl 1b\n" +@@ -350,12 +350,12 @@ lift_add_shift2_mmx (int16_t *d, int16_t + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%2,%%rcx,2), %%mm1\n" +- " movq (%3,%%rcx,2), %%mm2\n" ++ " movq (%q2,%%rcx,2), %%mm1\n" ++ " movq (%q3,%%rcx,2), %%mm2\n" + " paddw %%mm2, %%mm1\n" + " psraw $2, %%mm1\n" +- " paddw (%1,%%rcx,2), %%mm1\n" +- " movq %%mm1, (%0,%%rcx,2)\n" ++ " paddw (%q1,%%rcx,2), %%mm1\n" ++ " movq %%mm1, (%q0,%%rcx,2)\n" + " add $4, %%rcx\n" + " cmp %4, %%ecx\n" + " jl 1b\n" +@@ -382,13 +382,13 @@ lift_sub_shift2_mmx (int16_t *d, int16_t + asm volatile ("\n" + " xor %%rcx, %%rcx\n" + "1:\n" +- " movq (%2,%%rcx,2), %%mm1\n" +- " movq (%3,%%rcx,2), %%mm2\n" +- " movq (%1,%%rcx,2), %%mm0\n" ++ " movq (%q2,%%rcx,2), %%mm1\n" ++ " movq (%q3,%%rcx,2), %%mm2\n" ++ " movq (%q1,%%rcx,2), %%mm0\n" + " paddw %%mm2, %%mm1\n" + " psraw $2, %%mm1\n" + " psubw %%mm1, %%mm0\n" +- " movq %%mm0, (%0,%%rcx,2)\n" ++ " movq %%mm0, (%q0,%%rcx,2)\n" + " add $4, %%rcx\n" + " cmp %4, %%ecx\n" + " jl 1b\n"
meta/recipes-support/liboil/liboil_0.3.17.bb +2 -1
@@ -10,12 +10,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=ad80780d9c5205d63481a0184e199a15 \ file://testsuite/trans.c;endline=29;md5=380ecd43121fe3dcc0d8d7e5984f283d" DEPENDS = "glib-2.0" -PR = "r4" +PR = "r5" SRC_URI = "http://liboil.freedesktop.org/download/${BPN}-${PV}.tar.gz \ file://no-tests.patch \ file://fix-unaligned-whitelist.patch \ file://0001-Fix-enable-vfp-flag.patch \ + file://liboil_fix_for_x32.patch \ " SRC_URI[md5sum] = "47dc734f82faeb2964d97771cfd2e701"
Signature · 1 line
1.7.6.4
PATCH 9/11 xproto: fix compilation with x32 toolchain
In reply to [email protected]From: Nitin A Kamble <[email protected]>
Don't always define LONG64 for AMD64
X32 defines __amd64__/amd64 with 32bit long. We should simply check __LP64__ before defining LONG64 without checking __amd64__/amd64.
This fixes compilation with x32 toolchain.
--- .../xorg-proto/xproto/xproto_fix_for_x32.patch | 22 ++++++++++++++++++++ meta/recipes-graphics/xorg-proto/xproto_7.0.22.bb | 4 ++- 2 files changed, 25 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch
meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch new file +22 -0
@@ -0,0 +1,22 @@ +UpstreamStatus: Pending + +Don't always define LONG64 for AMD64 + +X32 defines __amd64__/amd64 with 32bit long. We should simply check +__LP64__ before defining LONG64 without checking __amd64__/amd64. + +This fixes compilation with x32 toolchain. + +Received this patch from H.J. Lu <[email protected]> +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/12/1 + +--- xproto-7.0.22/Xmd.h.x32 2009-07-11 04:19:50.000000000 -0700 ++++ xproto-7.0.22/Xmd.h 2011-11-30 17:14:19.290395893 -0800 +@@ -62,7 +62,6 @@ SOFTWARE. + defined(__ia64__) || defined(ia64) || \ + defined(__sparc64__) || \ + defined(__s390x__) || \ +- defined(__amd64__) || defined(amd64) || \ + defined(__powerpc64__) + # define LONG64 /* 32/64-bit architecture */ + # endif
meta/recipes-graphics/xorg-proto/xproto_7.0.22.bb +3 -1
@@ -8,9 +8,11 @@ System." LICENSE = "MIT & MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=b9e051107d5628966739a0b2e9b32676" -PR = "r0" +PR = "r1" PE = "1" +SRC_URI += "file://xproto_fix_for_x32.patch" + EXTRA_OECONF_append = " --enable-specs=no" BBCLASSEXTEND = "native nativesdk"
Signature · 1 line
1.7.6.4
PATCH 10/11 libaio: patch source code for x32
In reply to [email protected]From: Nitin A Kamble <[email protected]>
This Fixes bug: [YOCTO #1417]
Properly load arguments 5 an 6 for x86-64 syscall
Use asm ("r10") and asm ("r8") to load arguments 5 an 6 for x86-64 syscall so that it works with both x32 and x86-64.
--- .../libaio/libaio/libaio_fix_for_x32.patch | 61 ++++++++++++++++++++ meta/recipes-extended/libaio/libaio_0.3.109.bb | 5 +- 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch
meta/recipes-extended/libaio/libaio/libaio_fix_for_x32.patch new file +61 -0
@@ -0,0 +1,61 @@ +Upstream-Status: Pending + +Properly load arguments 5 an 6 for x86-64 syscall +Use asm ("r10") and asm ("r8") to load arguments 5 an 6 for x86-64 +syscall so that it works with both x32 and x86-64. + +Received this patch from H.J. Lu <[email protected]> + +Signed-Off-By: Nitin A Kamble <[email protected]> +2011/12/02 + +--- libaio-0.3.109/src/syscall-x86_64.h.x32 2009-10-09 11:17:02.000000000 -0700 ++++ libaio-0.3.109/src/syscall-x86_64.h 2011-12-02 09:09:07.537603224 -0800 +@@ -1,8 +1,18 @@ ++#ifndef __NR_io_setup + #define __NR_io_setup 206 ++#endif ++#ifndef __NR_io_destroy + #define __NR_io_destroy 207 ++#endif ++#ifndef __NR_io_getevents + #define __NR_io_getevents 208 ++#endif ++#ifndef __NR_io_submit + #define __NR_io_submit 209 ++#endif ++#ifndef __NR_io_cancel + #define __NR_io_cancel 210 ++#endif + + #define __syscall_clobber "r11","rcx","memory" + #define __syscall "syscall" +@@ -42,10 +52,11 @@ return __res; \ + type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ + { \ + long __res; \ +-__asm__ volatile ("movq %5,%%r10 ;" __syscall \ ++register long __a4 asm ("r10") = (long) arg4; \ ++__asm__ volatile (__syscall \ + : "=a" (__res) \ + : "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \ +- "d" ((long)(arg3)),"g" ((long)(arg4)) : __syscall_clobber,"r10" ); \ ++ "d" ((long)(arg3)),"r" (__a4)); \ + return __res; \ + } + +@@ -54,10 +65,11 @@ return __res; \ + type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ + { \ + long __res; \ +-__asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " __syscall \ ++register long __a4 asm ("r10") = (long) arg4; \ ++register long __a5 asm ("r8") = (long) arg5; \ ++__asm__ volatile ( __syscall \ + : "=a" (__res) \ + : "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \ +- "d" ((long)(arg3)),"g" ((long)(arg4)),"g" ((long)(arg5)) : \ +- __syscall_clobber,"r8","r10" ); \ ++ "d" ((long)(arg3)),"r" (__a4),"r" (__a5)); \ + return __res; \ + }
meta/recipes-extended/libaio/libaio_0.3.109.bb +3 -2
@@ -5,12 +5,13 @@ HOMEPAGE = "http://lse.sourceforge.net/io/aio.html" LICENSE = "LGPLv2.1+" LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499" -PR = "r0" +PR = "r1" SRC_URI = "${DEBIAN_MIRROR}/main/liba/libaio/libaio_${PV}.orig.tar.gz \ file://00_arches.patch \ file://toolchain.patch \ - file://destdir.patch" + file://destdir.patch \ + file://libaio_fix_for_x32.patch" SRC_URI[md5sum] = "435a5b16ca6198eaf01155263d855756" SRC_URI[sha256sum] = "bf4a457253cbaab215aea75cb6e18dc8d95bbd507e9920661ff9bdd288c8778d"
Signature · 1 line
1.7.6.4
PATCH 11/11 libatomics-ops: patch source code for x32
In reply to [email protected]From: Nitin A Kamble <[email protected]>
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.
--- .../libatomics-ops_fix_for_x32.patch | 41 ++++++++++++++++++++ .../pulseaudio/libatomics-ops_1.2.bb | 5 +- 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-multimedia/pulseaudio/libatomics-ops/libatomics-ops_fix_for_x32.patch
meta/recipes-multimedia/pulseaudio/libatomics-ops/libatomics-ops_fix_for_x32.patch new file +41 -0
@@ -0,0 +1,41 @@ +Upstream-Status: Pending + +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. + +Received this patch from H.J. Lu <[email protected]> +Signed-Off-By: Nitin A Kamble <[email protected]> 2011/12/02 + +--- libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h.x32 2005-09-28 17:16:38.000000000 -0700 ++++ libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h 2011-12-02 09:29:54.265251875 -0800 +@@ -60,7 +60,7 @@ AO_fetch_and_add_full (volatile AO_t *p, + { + AO_t result; + +- __asm__ __volatile__ ("lock; xaddq %0, %1" : ++ __asm__ __volatile__ ("lock; xadd %0, %1" : + "=r" (result), "=m" (*p) : "0" (incr), "m" (*p) + : "memory"); + return result; +@@ -111,7 +111,7 @@ AO_int_fetch_and_add_full (volatile unsi + AO_INLINE void + AO_or_full (volatile AO_t *p, AO_t incr) + { +- __asm__ __volatile__ ("lock; orq %1, %0" : ++ __asm__ __volatile__ ("lock; or %1, %0" : + "=m" (*p) : "r" (incr), "m" (*p) : "memory"); + } + +@@ -136,7 +136,7 @@ AO_compare_and_swap_full(volatile AO_t * + AO_t old, AO_t new_val) + { + char result; +- __asm__ __volatile__("lock; cmpxchgq %3, %0; setz %1" ++ __asm__ __volatile__("lock; cmpxchg %3, %0; setz %1" + : "=m"(*addr), "=q"(result) + : "m"(*addr), "r" (new_val), "a"(old) : "memory"); + return (int) result;
meta/recipes-multimedia/pulseaudio/libatomics-ops_1.2.bb +3 -2
@@ -6,12 +6,13 @@ LICENSE = "GPLv2 & MIT" LIC_FILES_CHKSUM = "file://doc/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ file://doc/LICENSING.txt;md5=607073e04548eac7d1f763e480477bab \ " -PR = "r7" +PR = "r8" SRC_URI = "http://www.hpl.hp.com/research/linux/atomic_ops/download/libatomic_ops-${PV}.tar.gz \ file://fedora/libatomic_ops-1.2-ppclwzfix.patch \ file://gentoo/libatomic_ops-1.2-mips.patch \ - file://doublefix.patch" + file://doublefix.patch \ + file://libatomics-ops_fix_for_x32.patch" SRC_URI[md5sum] = "1b65e48271c81e3fa2d7a9a69bab7504" SRC_URI[sha256sum] = "a3d8768aa8fd2f6ae79be2d756b3a6b48816b3889ae906be3d5ffb2de5a5c781"
Signature · 1 line
1.7.6.4
Re: [PATCH 01/11] gst-fluendo-mpegdemux: rework the CC hack
In reply to [email protected]Quoted 20 lines · On Fri, Dec 2, 2011 at 12:19 PM, <[email protected]> wrote:
From: Nitin A Kamble <[email protected]>
This fixes bug: [YOCTO #1403]
Earlier hack was breaking compiler parameters set by tune settings. And that caused x32 build failure. Now previous CC parameters are kept intact while adding new -L parameter.
Signed-off-by Nitin A Kamble <[email protected]>---
meta/recipes-multimedia/gstreamer/gst-fluendo.inc | 2 +-1 files changed, 1 insertions(+), 1 deletions(-)meta/recipes-multimedia/gstreamer/gst-fluendo.inc +0
-0@@ -14,5 +14,5 @@ FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a"EXTRA_OECONF = "--disable-debug --disable-valgrind"
# Hack to get
STAGING_LIBDIRinto the linker path when building
meta/recipes-multimedia/gstreamer/gst-fluendo.inc FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a" · line 17
Quoted 2 lines
meta/recipes-multimedia/gstreamer/gst-fluendo.inc +1
-1-CC = "${CCACHE} ${HOST_PREFIX}gcc -L${STAGING_LIBDIR}" +CC += "-L${STAGING_LIBDIR}"
This looks like part of LDFLAGS more than CC to me.
Re: [PATCH 01/11] gst-fluendo-mpegdemux: rework the CC hack
Hi Khem,
Makes sense. Will try to change the fix accordingly.
Thanks,
Nitin
Quoted 44 lines
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Khem Raj
Sent: Saturday, December 03, 2011 9:53 AM
To: Patches and discussions about the oe-core layer
Cc: [email protected]
Subject: Re: [OE-core] [PATCH 01/11] gst-fluendo-mpegdemux: rework the CC hackQuoted 5 lines · On Fri, Dec 2, 2011 at 12:19 PM, <[email protected]> wrote:
From: Nitin A Kamble <[email protected]>
This fixes bug: [YOCTO #1403]
Earlier hack was breaking compiler parameters set by tune settings.
And that caused x32
Quoted 1 line
build failure. Now previous CC parameters are kept intact while
adding new -L parameter.
Review
Quoted 7 lines
Signed-off-by Nitin A Kamble <[email protected]>---
meta/recipes-multimedia/gstreamer/gst-fluendo.inc | 2 +-1 files changed, 1 insertions(+), 1 deletions(-)(quoted diff) +0
-0b/meta/recipes-multimedia/gstreamer/gst-fluendo.inc
meta/recipes-multimedia/gstreamer/gst-fluendo.inc FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la
Quoted 4 lines
index 203bdba..9615454 100644
meta/recipes-multimedia/gstreamer/gst-fluendo.inc +0
-0@@ -14,5 +14,5 @@ FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la${libdir}/gstreamer-0.10/*.a"
meta/recipes-multimedia/gstreamer/gst-fluendo.inc FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-0.10/*.a" · line 17
Quoted 5 lines
EXTRA_OECONF = "--disable-debug --disable-valgrind"
# Hack to get
STAGING_LIBDIRinto the linker path when buildingmeta/recipes-multimedia/gstreamer/gst-fluendo.inc +1
-1-CC = "${CCACHE} ${HOST_PREFIX}gcc -L${STAGING_LIBDIR}" +CC += "-L${STAGING_LIBDIR}"This looks like part of LDFLAGS more than CC to me.
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Quoted 16 lines · On Fri, 2011-12-02 at 12:19 -0800, [email protected] wrote:
From: Nitin A Kamble <[email protected]>
These commits fixes building of various recipes with x32 toolchain for x32 target/machines. And these do not affect these recipes for other non-x32 targets.
X32 is new ABI for x86-64 architecture.
For more information refer: https://sites.google.com/site/x32abi/Thanks,
NitinThe following changes since commit
9be6d59b78510443d0944513503d515df13caa45:dpkg-native: Fix perl path (2011-12-02 15:31:08 +0000)
Quoted 7 lines
are available in the git repository at:
git://git.pokylinux.org/poky-contribnitin/x32
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=nitin.x32Nitin A Kamble (11):
gst-fluendo-mpegdemux: rework the CC hack
mdadm: fix CC definition in theMakefile
There was some feedback on these which I haven't looked into fully.
Quoted 9 lines
openssl-1.0.0e: fix to wotk with x32 toolchain
gmp: fix the recipe for x32 target
mesa-dri, mesa-xlib: fix compilation with x32 toolchain glib-2.0: fix compilatoin with x32 toolchain
libxt: fix compilatoin with x32 toolchain
liboil: patch source code for x32
xproto: fix compilation with x32 toolchain
libaio: patch source code for x32
libatomics-ops: patch source code for x32
These looked reasonable so I've merged them, thanks.
Richard