[oe] [meta-oe][PATCH] log4cplus: Fix build with gold linker

Yu, Mingli mingli.yu at windriver.com
Wed Jul 31 06:37:59 UTC 2019


Hi Khem,

On 2019年07月23日 05:18, Khem Raj wrote:
> Fixes a potential linker error and eventual linker crash when using gold
> linker [1]
>
> [1] https://errors.yoctoproject.org/Errors/Details/253440/
>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> Cc: Adrian Bunk <bunk at stusta.de>
> Cc: Mingli Yu <mingli.yu at windriver.com>
> ---
>   ...-version-entry-from-ELF-.comment-sec.patch | 40 +++++++++++++++++++
>   .../log4cplus/log4cplus_2.0.4.bb              |  6 ++-
>   2 files changed, 45 insertions(+), 1 deletion(-)
>   create mode 100644 meta-oe/recipes-devtools/log4cplus/log4cplus/0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch
>
> diff --git a/meta-oe/recipes-devtools/log4cplus/log4cplus/0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch b/meta-oe/recipes-devtools/log4cplus/log4cplus/0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch
> new file mode 100644
> index 0000000000..44a835c35f
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/log4cplus/log4cplus/0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch
> @@ -0,0 +1,40 @@
> +From da5338e68f146efadab7c221291ba4c949d8f12f Mon Sep 17 00:00:00 2001
> +From: Vaclav Haisman <vhaisman at gmail.com>
> +Date: Sun, 21 Jul 2019 23:23:16 -0700
> +Subject: [PATCH] Remove log4cplus version entry from ELF .comment section
> +
> +Reverts
> +https://github.com/log4cplus/log4cplus/commit/9cb0d4ade619da4e40628c9b95ff51de3df29f1b
> +
> +Upstream-Status: Backport [https://github.com/log4cplus/log4cplus/commit/7e6addc70dffd2e30e902efd18eb845c5d5dd7bb]
> +
> +Suggested-by: Adrian Bunk <bunk at stusta.de>
> +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> +---
> + src/version.cxx | 12 ------------
> + 1 file changed, 12 deletions(-)
> +
> +diff --git a/src/version.cxx b/src/version.cxx
> +index ce18212..e002de9 100644
> +--- a/src/version.cxx
> ++++ b/src/version.cxx
> +@@ -34,16 +34,4 @@ namespace log4cplus
> + unsigned const version = LOG4CPLUS_VERSION;
> + char const versionStr[] = LOG4CPLUS_VERSION_STR LOG4CPLUS_VERSION_STR_SUFFIX;
> +
> +-namespace
> +-{
> +-
> +-#if defined (__ELF__) && (defined (__GNUC__) || defined (__clang__))
> +-char const versionStrComment[]
> +-    __attribute__ ((__used__, __section__ ((".comment"))))
> +-    = "log4cplus " LOG4CPLUS_VERSION_STR LOG4CPLUS_VERSION_STR_SUFFIX;
> +-#endif
> +-
> +-
> +-} // namespace
> +-
> + } // namespace log4cplus
> +--
> +2.22.0
> +
> diff --git a/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.4.bb b/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.4.bb
> index d86521aba3..b396cabf3f 100644
> --- a/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.4.bb
> +++ b/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.4.bb
> @@ -6,7 +6,9 @@ BUGTRACKER = "http://sourceforge.net/p/log4cplus/bugs/"
>   LICENSE = "Apache-2.0 & BSD-2-Clause"
>   LIC_FILES_CHKSUM = "file://LICENSE;md5=41e8e060c26822886b592ab4765c756b"
>
> -SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz"
> +SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz \
> +           file://0001-Remove-log4cplus-version-entry-from-ELF-.comment-sec.patch \
> +          "
>   SRC_URI[md5sum] = "2b5b7bc294698bf30a315a259ef9eec2"
>   SRC_URI[sha256sum] = "196eedbc7f2dd792dae721b1159c7ac132255bb368226353c24d4d5fa7c7797a"
>
> @@ -16,3 +18,5 @@ UPSTREAM_CHECK_REGEX = "log4cplus-stable/(?P<pver>\d+(\.\d+)+)/"
>   inherit autotools pkgconfig
>
>   BBCLASSEXTEND = "native"
> +
> +CXXFLAGS += "-fuse-ld=gold"

The logic [CXXFLAGS += "-fuse-ld=gold"] you added is used to fix the 
linker crash on arm though I didn't encounter.

BTW, after you add [CXXFLAGS += "-fuse-ld=gold"], it fails the build for 
"bitbake libn32-log4cplus" with below logic in local.conf
MACHINE ??= "qemumips64"
MULTILIB_GLOBAL_VARIANTS_append = " libn32"
MULTILIBS ?= "multilib:lib32 multilib:libn32"
DEFAULTTUNE_virtclass-multilib-lib32 ?= "mips"
DEFAULTTUNE_virtclass-multilib-libn32 ?= "mips64-n32"
require conf/multilib.conf

Thanks,

>


More information about the Openembedded-devel mailing list