[oe] [meta-qt5][PATCHv2] qtbase: disable gold to work around binutils bug

Martin Jansa martin.jansa at gmail.com
Sun Aug 20 11:08:10 UTC 2017


Combination of v1 and v2 is actually needed, because without -fuse-ld=bfd
it will still use gold by default even when -no-use-gold-linker is used.

I'll resend after finishing build of all qt,
because meta-qt5/recipes-qt/qt5/qtgraphicaleffects_git.bb seems to have the
same issue with security_flags.inc.

On Sat, Aug 19, 2017 at 4:28 PM, Martin Jansa <martin.jansa at gmail.com>
wrote:

> Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
> ---
>  recipes-qt/qt5/qtbase_git.bb | 24 +++++++++++++++++++++++-
>  1 file changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/recipes-qt/qt5/qtbase_git.bb b/recipes-qt/qt5/qtbase_git.bb
> index 8cd23a0..804a604 100644
> --- a/recipes-qt/qt5/qtbase_git.bb
> +++ b/recipes-qt/qt5/qtbase_git.bb
> @@ -41,6 +41,27 @@ SRC_URI += "\
>  # for syncqt
>  RDEPENDS_${PN}-tools += "perl"
>
> +# workaround for gold bug:
> +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=842304
> +# https://sourceware.org/bugzilla/show_bug.cgi?id=21712
> +# it's triggered only in combination of gold and security_flags.inc,
> +# because security_flags.inc now enable pie by default.
> +# Adding -no-pie or changing -fuse-ld=gold to -fuse-ld=bfd
> +# works around this issue, will use -fuse-ld=bfd as it's considered
> +# binutils bug.
> +# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.
> 0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $
> i586-oe-linux-g++  -m32 -march=i586 --sysroot=/OE/build/oe-core/
> tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot
> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/
> tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot
> -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype
> .obj/tst_qmetatype.o   -L/OE/build/oe-core/tmp-glibc/
> work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib
> -lQt5Test -lQt5Core -lpthread
> +# .obj/tst_qmetatype.o(.qtversion+0x0): error: unexpected reloc 3
> against global symbol qt_version_tag without base register in object file
> when generating a position-independent output file
> +# collect2: error: ld returned 1 exit status
> +#
> +# with -no-pie:
> +# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.
> 0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $
> i586-oe-linux-g++ -no-pie -m32 -march=i586 --sysroot=/OE/build/oe-core/
> tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot
> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/
> tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot
> -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype
> .obj/tst_qmetatype.o   -L/OE/build/oe-core/tmp-glibc/
> work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib
> -lQt5Test -lQt5Core -lpthread
> +#
> +# with -fuse-ld=gold replaced with -fuse-ld=bfd:
> +# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.
> 0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $
> i586-oe-linux-g++  -m32 -march=i586 --sysroot=/OE/build/oe-core/
> tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot
> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/
> tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot
> -Wl,-O1 -fuse-ld=bfd -Wl,--enable-new-dtags -o tst_qmetatype
> .obj/tst_qmetatype.o   -L/OE/build/oe-core/tmp-glibc/
> work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib
> -lQt5Test -lQt5Core -lpthread
> +#
> +# http://errors.yoctoproject.org/Errors/Details/150329/
> +QT_CONFIG_FLAGS_GOLD_x86 = "-no-use-gold-linker"
> +
>  # separate some parts of PACKAGECONFIG which are often changed
>  PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl',
> 'gl', '', d)}"
>  PACKAGECONFIG_FB ?= "${@bb.utils.contains('DISTRO_FEATURES', 'directfb',
> 'directfb', '', d)}"
> @@ -129,8 +150,9 @@ PACKAGECONFIG[libproxy] = "-libproxy,-no-libproxy,
> libproxy"
>  PACKAGECONFIG[libinput] = "-libinput,-no-libinput,libinput"
>  PACKAGECONFIG[journald] = "-journald,-no-journald,systemd"
>
> +QT_CONFIG_FLAGS_GOLD = "${@bb.utils.contains('DISTRO_FEATURES',
> 'ld-is-gold', '-use-gold-linker', '-no-use-gold-linker', d)}"
>  QT_CONFIG_FLAGS += " \
> -    ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold',
> '-use-gold-linker', '-no-use-gold-linker', d)} \
> +    ${QT_CONFIG_FLAGS_GOLD} \
>      -shared \
>      -silent \
>      -no-pch \
> --
> 2.14.0
>
>



More information about the Openembedded-devel mailing list