Patchwork Qt 4.8 GCC 4.7 fixes

login
register
mail settings
Submitter Ken Werner
Date April 27, 2012, 10:59 a.m.
Message ID <1335524357-16990-1-git-send-email-ken.werner@linaro.org>
Download mbox | patch
Permalink /patch/26523/
State Accepted
Commit c98d60923b84bcd285644cecaed1fa0455747a2f
Headers show

Comments

Ken Werner - April 27, 2012, 10:59 a.m.
This change introduces two new patches to Qt 4.8. One prevents the build
system from using the -fuse-ld=gold GCC flag as this isn't upstream and
therefore not supported by many toolchains out there. The second patch
fixes a compile time error when using toolchains based on GCC 4.7.

Signed-off-by: Ken Werner <ken.werner@linaro.org>
---
 meta/recipes-qt/qt4/qt-4.8.1.inc                   |    2 +
 .../qt4/qt-4.8.1/disable-fuse-gold-flag.patch      |   26 ++++++++++++++++
 meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch       |   31 ++++++++++++++++++++
 meta/recipes-qt/qt4/qt4-embedded.inc               |    2 +-
 4 files changed, 60 insertions(+), 1 deletions(-)
 create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
 create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
Richard Purdie - April 27, 2012, 11:28 a.m.
On Fri, 2012-04-27 at 12:59 +0200, Ken Werner wrote:
> This change introduces two new patches to Qt 4.8. One prevents the build
> system from using the -fuse-ld=gold GCC flag as this isn't upstream and
> therefore not supported by many toolchains out there. The second patch
> fixes a compile time error when using toolchains based on GCC 4.7.
> 
> Signed-off-by: Ken Werner <ken.werner@linaro.org>
> ---
>  meta/recipes-qt/qt4/qt-4.8.1.inc                   |    2 +
>  .../qt4/qt-4.8.1/disable-fuse-gold-flag.patch      |   26 ++++++++++++++++
>  meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch       |   31 ++++++++++++++++++++
>  meta/recipes-qt/qt4/qt4-embedded.inc               |    2 +-
>  4 files changed, 60 insertions(+), 1 deletions(-)
>  create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
>  create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch

Thanks, this is very timely as it happens. 

In the future could you put an "Upstream-Status:" header in any patches
which get added along with an indication of the author? This helps a lot
when you look at the patch in 12 months and wonder who wrote it (you
covered why) and also gives us an idea of which patches might be worth
prioritising to discuss with upstream. 

In this case, I've added your changes to master-next and added in the
missing patch header pieces myself. I've just been working through the
remaining gcc 4.7 issues and this looks like the main one left.

Cheers,

Richard
Eric BENARD - April 27, 2012, 12:53 p.m.
Hi Ken,

Le Fri, 27 Apr 2012 12:59:17 +0200,
Ken Werner <ken.werner@linaro.org> a écrit :

> This change introduces two new patches to Qt 4.8. One prevents the build
> system from using the -fuse-ld=gold GCC flag as this isn't upstream and
> therefore not supported by many toolchains out there. The second patch

ld-is-gold is a DISTRO_FEATURES wich enables gold (and thus reduce link
time especially in qt's build) : has this patch an effect on the
possibility to still use gold ?

Eric
Khem Raj - April 27, 2012, 2:43 p.m.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 04/27/2012 04:28 AM, Richard Purdie wrote:
> In the future could you put an "Upstream-Status:" header in any
> patches which get added along with an indication of the author?
> This helps a lot when you look at the patch in 12 months and wonder
> who wrote it (you covered why) and also gives us an idea of which
> patches might be worth prioritising to discuss with upstream.

I think its a forward port of this patch

http://git.openembedded.org/openembedded-core/tree/meta/recipes-qt/qt4/qt-4.7.4/gcc47-fix.patch

so you can add that to header
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk+asIAACgkQuwUzVZGdMxTGnACdGn8JxrpsgsCIWiQ0NhGdGJag
vKUAn2oECoQqL9e+/GueKqfWbcKmxAnR
=bHqW
-----END PGP SIGNATURE-----
Ken Werner - April 27, 2012, 4:19 p.m.
On 04/27/2012 01:28 PM, Richard Purdie wrote:
> On Fri, 2012-04-27 at 12:59 +0200, Ken Werner wrote:
>> This change introduces two new patches to Qt 4.8. One prevents the build
>> system from using the -fuse-ld=gold GCC flag as this isn't upstream and
>> therefore not supported by many toolchains out there. The second patch
>> fixes a compile time error when using toolchains based on GCC 4.7.
>>
>> Signed-off-by: Ken Werner<ken.werner@linaro.org>
>> ---
>>   meta/recipes-qt/qt4/qt-4.8.1.inc                   |    2 +
>>   .../qt4/qt-4.8.1/disable-fuse-gold-flag.patch      |   26 ++++++++++++++++
>>   meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch       |   31 ++++++++++++++++++++
>>   meta/recipes-qt/qt4/qt4-embedded.inc               |    2 +-
>>   4 files changed, 60 insertions(+), 1 deletions(-)
>>   create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
>>   create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
>
> Thanks, this is very timely as it happens.
>
> In the future could you put an "Upstream-Status:" header in any patches
> which get added along with an indication of the author? This helps a lot
> when you look at the patch in 12 months and wonder who wrote it (you
> covered why) and also gives us an idea of which patches might be worth
> prioritising to discuss with upstream.
>
> In this case, I've added your changes to master-next and added in the
> missing patch header pieces myself. I've just been working through the
> remaining gcc 4.7 issues and this looks like the main one left.
>
> Cheers,
>
> Richard

Ok, thanks!

Regards,
Ken
Ken Werner - April 27, 2012, 4:19 p.m.
On 04/27/2012 02:53 PM, Eric Bénard wrote:
> Hi Ken,
>
> Le Fri, 27 Apr 2012 12:59:17 +0200,
> Ken Werner<ken.werner@linaro.org>  a écrit :
>
>> This change introduces two new patches to Qt 4.8. One prevents the build
>> system from using the -fuse-ld=gold GCC flag as this isn't upstream and
>> therefore not supported by many toolchains out there. The second patch
>
> ld-is-gold is a DISTRO_FEATURES wich enables gold (and thus reduce link
> time especially in qt's build) : has this patch an effect on the
> possibility to still use gold ?
>
> Eric

No, the patch doesn't prevent the toolchain from linking using gold. 
Upstream GCC+binutils supports either gold or the classic ld - a 
decision you make at the configure time of your toolchain. However, 
Debian and Ubuntu have patched their toolchains to allow the user to 
pick the desired linker using the -fuse-ld option. Technically what they 
do is a patch to the binutils which installs both the ld.bfd and ls.gold 
plus a symlink that selects the default linker. And a GCC patch that 
changes collect2 to support the -fuse-ld switch.

Regards,
Ken
Saul Wold - May 1, 2012, 6:53 p.m.
On 04/27/2012 03:59 AM, Ken Werner wrote:
> This change introduces two new patches to Qt 4.8. One prevents the build
> system from using the -fuse-ld=gold GCC flag as this isn't upstream and
> therefore not supported by many toolchains out there. The second patch
> fixes a compile time error when using toolchains based on GCC 4.7.
>
> Signed-off-by: Ken Werner<ken.werner@linaro.org>
> ---
>   meta/recipes-qt/qt4/qt-4.8.1.inc                   |    2 +
>   .../qt4/qt-4.8.1/disable-fuse-gold-flag.patch      |   26 ++++++++++++++++
>   meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch       |   31 ++++++++++++++++++++
>   meta/recipes-qt/qt4/qt4-embedded.inc               |    2 +-
>   4 files changed, 60 insertions(+), 1 deletions(-)
>   create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
>   create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
>
> diff --git a/meta/recipes-qt/qt4/qt-4.8.1.inc b/meta/recipes-qt/qt4/qt-4.8.1.inc
> index cd78401..b42ca01 100644
> --- a/meta/recipes-qt/qt4/qt-4.8.1.inc
> +++ b/meta/recipes-qt/qt4/qt-4.8.1.inc
> @@ -20,6 +20,8 @@ SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.
>              file://pulseaudio-config.patch \
>              file://g++.conf \
>              file://linux.conf \
> +           file://gcc47-fix.patch \
> +           file://disable-fuse-gold-flag.patch \
>              "
>
>   SRC_URI[md5sum] = "7960ba8e18ca31f0c6e4895a312f92ff"
> diff --git a/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch b/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
> new file mode 100644
> index 0000000..d49d7bc
> --- /dev/null
> +++ b/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
> @@ -0,0 +1,26 @@
> +Disable the -fuse-ld=gold flag. This option is a Debian/Ubuntu specific
> +extension to the g++ and causes upstream GCC to throw an error.
> +
> +Index: qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
> +===================================================================
> +--- qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/webkit/Source/common.pri
> ++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
> +@@ -3,12 +3,12 @@
> + contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1
> + contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0
> +
> +-linux-g++ {
> +-isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
> +-    message(Using gold linker)
> +-    QMAKE_LFLAGS+=-fuse-ld=gold
> +-}
> +-}
> ++#linux-g++ {
> ++#isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
> ++#    message(Using gold linker)
> ++#    QMAKE_LFLAGS+=-fuse-ld=gold
> ++#}
> ++#}
> +
> + # We use this flag on production branches
> + # See https://bugs.webkit.org/show_bug.cgi?id=60824
> diff --git a/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch b/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
> new file mode 100644
> index 0000000..8252817
> --- /dev/null
> +++ b/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
> @@ -0,0 +1,31 @@
> +Fix compile error when using toolchains based on GCC 4.7.
> +
> +Index: qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
> +===================================================================
> +--- qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
> ++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
> +@@ -57,9 +57,7 @@ namespace JSC {
> +
> +     class JSGlobalObject : public JSVariableObject {
> +     protected:
> +-        using JSVariableObject::JSVariableObjectData;
> +-
> +-        struct JSGlobalObjectData : public JSVariableObjectData {
> ++        struct JSGlobalObjectData : public JSVariableObject::JSVariableObjectData {
> +             // We use an explicit destructor function pointer instead of a
> +             // virtual destructor because we want to avoid adding a vtable
> +             // pointer to this struct. Adding a vtable pointer would force the
> +Index: qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
> +===================================================================
> +--- qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
> ++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
> +@@ -32,8 +32,7 @@ namespace JSC{
> +
> +     class JSStaticScopeObject : public JSVariableObject {
> +     protected:
> +-        using JSVariableObject::JSVariableObjectData;
> +-        struct JSStaticScopeObjectData : public JSVariableObjectData {
> ++        struct JSStaticScopeObjectData : public JSVariableObjectData::JSVariableObjectData {
> +             JSStaticScopeObjectData()
> +                 : JSVariableObjectData(&symbolTable,&registerStore + 1)
> +             {
> diff --git a/meta/recipes-qt/qt4/qt4-embedded.inc b/meta/recipes-qt/qt4/qt4-embedded.inc
> index 8c15352..291e62a 100644
> --- a/meta/recipes-qt/qt4/qt4-embedded.inc
> +++ b/meta/recipes-qt/qt4/qt4-embedded.inc
> @@ -2,7 +2,7 @@ DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is
>   SECTION = "libs"
>   HOMEPAGE = "http://qt.nokia.com"
>   DEPENDS += "directfb tslib"
> -INC_PR = "r43"
> +INC_PR = "r44"
>
>   QT_BASE_LIB  ?= "libqt-embedded"
>

Merged into OE-Core, but still needs updated patch headers please

Thanks
	Sau!
Saul Wold - May 1, 2012, 6:55 p.m.
On 05/01/2012 11:53 AM, Saul Wold wrote:
> On 04/27/2012 03:59 AM, Ken Werner wrote:
>> This change introduces two new patches to Qt 4.8. One prevents the build
>> system from using the -fuse-ld=gold GCC flag as this isn't upstream and
>> therefore not supported by many toolchains out there. The second patch
>> fixes a compile time error when using toolchains based on GCC 4.7.
>>
>> Signed-off-by: Ken Werner<ken.werner@linaro.org>
>> ---
>> meta/recipes-qt/qt4/qt-4.8.1.inc | 2 +
>> .../qt4/qt-4.8.1/disable-fuse-gold-flag.patch | 26 ++++++++++++++++
>> meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch | 31 ++++++++++++++++++++
>> meta/recipes-qt/qt4/qt4-embedded.inc | 2 +-
>> 4 files changed, 60 insertions(+), 1 deletions(-)
>> create mode 100644
>> meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
>> create mode 100644 meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
>>
>> diff --git a/meta/recipes-qt/qt4/qt-4.8.1.inc
>> b/meta/recipes-qt/qt4/qt-4.8.1.inc
>> index cd78401..b42ca01 100644
>> --- a/meta/recipes-qt/qt4/qt-4.8.1.inc
>> +++ b/meta/recipes-qt/qt4/qt-4.8.1.inc
>> @@ -20,6 +20,8 @@ SRC_URI =
>> "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.
>> file://pulseaudio-config.patch \
>> file://g++.conf \
>> file://linux.conf \
>> + file://gcc47-fix.patch \
>> + file://disable-fuse-gold-flag.patch \
>> "
>>
>> SRC_URI[md5sum] = "7960ba8e18ca31f0c6e4895a312f92ff"
>> diff --git a/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
>> b/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
>> new file mode 100644
>> index 0000000..d49d7bc
>> --- /dev/null
>> +++ b/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
>> @@ -0,0 +1,26 @@
>> +Disable the -fuse-ld=gold flag. This option is a Debian/Ubuntu specific
>> +extension to the g++ and causes upstream GCC to throw an error.
>> +
>> +Index:
>> qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
>> +===================================================================
>> +---
>> qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/webkit/Source/common.pri
>>
>> ++++
>> qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
>> +@@ -3,12 +3,12 @@
>> + contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1
>> + contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0
>> +
>> +-linux-g++ {
>> +-isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
>> +- message(Using gold linker)
>> +- QMAKE_LFLAGS+=-fuse-ld=gold
>> +-}
>> +-}
>> ++#linux-g++ {
>> ++#isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
>> ++# message(Using gold linker)
>> ++# QMAKE_LFLAGS+=-fuse-ld=gold
>> ++#}
>> ++#}
>> +
>> + # We use this flag on production branches
>> + # See https://bugs.webkit.org/show_bug.cgi?id=60824
>> diff --git a/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
>> b/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
>> new file mode 100644
>> index 0000000..8252817
>> --- /dev/null
>> +++ b/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
>> @@ -0,0 +1,31 @@
>> +Fix compile error when using toolchains based on GCC 4.7.
>> +
>> +Index:
>> qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
>>
>> +===================================================================
>> +---
>> qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
>>
>> ++++
>> qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
>>
>> +@@ -57,9 +57,7 @@ namespace JSC {
>> +
>> + class JSGlobalObject : public JSVariableObject {
>> + protected:
>> +- using JSVariableObject::JSVariableObjectData;
>> +-
>> +- struct JSGlobalObjectData : public JSVariableObjectData {
>> ++ struct JSGlobalObjectData : public
>> JSVariableObject::JSVariableObjectData {
>> + // We use an explicit destructor function pointer instead of a
>> + // virtual destructor because we want to avoid adding a vtable
>> + // pointer to this struct. Adding a vtable pointer would force the
>> +Index:
>> qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
>>
>> +===================================================================
>> +---
>> qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
>>
>> ++++
>> qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
>>
>> +@@ -32,8 +32,7 @@ namespace JSC{
>> +
>> + class JSStaticScopeObject : public JSVariableObject {
>> + protected:
>> +- using JSVariableObject::JSVariableObjectData;
>> +- struct JSStaticScopeObjectData : public JSVariableObjectData {
>> ++ struct JSStaticScopeObjectData : public
>> JSVariableObjectData::JSVariableObjectData {
>> + JSStaticScopeObjectData()
>> + : JSVariableObjectData(&symbolTable,&registerStore + 1)
>> + {
>> diff --git a/meta/recipes-qt/qt4/qt4-embedded.inc
>> b/meta/recipes-qt/qt4/qt4-embedded.inc
>> index 8c15352..291e62a 100644
>> --- a/meta/recipes-qt/qt4/qt4-embedded.inc
>> +++ b/meta/recipes-qt/qt4/qt4-embedded.inc
>> @@ -2,7 +2,7 @@ DESCRIPTION = "Qt is a versatile cross-platform
>> application framework -- this is
>> SECTION = "libs"
>> HOMEPAGE = "http://qt.nokia.com"
>> DEPENDS += "directfb tslib"
>> -INC_PR = "r43"
>> +INC_PR = "r44"
>>
>> QT_BASE_LIB ?= "libqt-embedded"
>>
>
> Merged into OE-Core, but still needs updated patch headers please
>
Never mind, I missed RP's fix for the patch headers.

Sau!

> Thanks
> Sau!
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>

Patch

diff --git a/meta/recipes-qt/qt4/qt-4.8.1.inc b/meta/recipes-qt/qt4/qt-4.8.1.inc
index cd78401..b42ca01 100644
--- a/meta/recipes-qt/qt4/qt-4.8.1.inc
+++ b/meta/recipes-qt/qt4/qt-4.8.1.inc
@@ -20,6 +20,8 @@  SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.
            file://pulseaudio-config.patch \
            file://g++.conf \
            file://linux.conf \
+           file://gcc47-fix.patch \
+           file://disable-fuse-gold-flag.patch \
            "
 
 SRC_URI[md5sum] = "7960ba8e18ca31f0c6e4895a312f92ff"
diff --git a/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch b/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
new file mode 100644
index 0000000..d49d7bc
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.8.1/disable-fuse-gold-flag.patch
@@ -0,0 +1,26 @@ 
+Disable the -fuse-ld=gold flag. This option is a Debian/Ubuntu specific
+extension to the g++ and causes upstream GCC to throw an error.
+
+Index: qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
+===================================================================
+--- qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/webkit/Source/common.pri
++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
+@@ -3,12 +3,12 @@
+ contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1
+ contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0
+ 
+-linux-g++ {
+-isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
+-    message(Using gold linker)
+-    QMAKE_LFLAGS+=-fuse-ld=gold
+-}
+-}
++#linux-g++ {
++#isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
++#    message(Using gold linker)
++#    QMAKE_LFLAGS+=-fuse-ld=gold
++#}
++#}
+ 
+ # We use this flag on production branches
+ # See https://bugs.webkit.org/show_bug.cgi?id=60824
diff --git a/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch b/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
new file mode 100644
index 0000000..8252817
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.8.1/gcc47-fix.patch
@@ -0,0 +1,31 @@ 
+Fix compile error when using toolchains based on GCC 4.7.
+
+Index: qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
+===================================================================
+--- qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h
+@@ -57,9 +57,7 @@ namespace JSC {
+     
+     class JSGlobalObject : public JSVariableObject {
+     protected:
+-        using JSVariableObject::JSVariableObjectData;
+-
+-        struct JSGlobalObjectData : public JSVariableObjectData {
++        struct JSGlobalObjectData : public JSVariableObject::JSVariableObjectData {
+             // We use an explicit destructor function pointer instead of a
+             // virtual destructor because we want to avoid adding a vtable
+             // pointer to this struct. Adding a vtable pointer would force the
+Index: qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
+===================================================================
+--- qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h
+@@ -32,8 +32,7 @@ namespace JSC{
+     
+     class JSStaticScopeObject : public JSVariableObject {
+     protected:
+-        using JSVariableObject::JSVariableObjectData;
+-        struct JSStaticScopeObjectData : public JSVariableObjectData {
++        struct JSStaticScopeObjectData : public JSVariableObjectData::JSVariableObjectData {
+             JSStaticScopeObjectData()
+                 : JSVariableObjectData(&symbolTable, &registerStore + 1)
+             {
diff --git a/meta/recipes-qt/qt4/qt4-embedded.inc b/meta/recipes-qt/qt4/qt4-embedded.inc
index 8c15352..291e62a 100644
--- a/meta/recipes-qt/qt4/qt4-embedded.inc
+++ b/meta/recipes-qt/qt4/qt4-embedded.inc
@@ -2,7 +2,7 @@  DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is
 SECTION = "libs"
 HOMEPAGE = "http://qt.nokia.com"
 DEPENDS += "directfb tslib"
-INC_PR = "r43"
+INC_PR = "r44"
 
 QT_BASE_LIB  ?= "libqt-embedded"