All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] systemd: work-around ppc gold linker error
@ 2017-06-22  2:14 Randy MacLeod
  2017-06-22  4:34 ` Randy MacLeod
  0 siblings, 1 reply; 5+ messages in thread
From: Randy MacLeod @ 2017-06-22  2:14 UTC (permalink / raw)
  To: openembedded-core

If you enable systemd and build for qemuppc, then the
compile of systemd fails due to a gold linker failure:

   .../powerpc-oe-linux-ld.gold:
   error: invalid STB_LOCAL symbol in external symbols
   error: linker defined: multiple definition of '00000001.plt_call.memcpy+8000'
   command line: previous definition here

A git bisect confirms that the commit:
   0b0f545 binutils-2.28: Update to latest on release branch
is the problem. This is only known to affect powerpc machines.

Work-around this for powerpc by getting configure to use
the bfd linker rather than the gold linker.

This unblocks powerpc use until the linker bug can be resolved.

Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
---
 .../systemd/systemd/systemd-drop-gold-use-bfd.patch   | 19 +++++++++++++++++++
 meta/recipes-core/systemd/systemd_232.bb              |  2 ++
 2 files changed, 21 insertions(+)
 create mode 100644 meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch

diff --git a/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch b/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
new file mode 100644
index 0000000..e0eb0bd
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
@@ -0,0 +1,19 @@
+Upstream-Status: Inappropriate [other]
+
+The patch is not appropriate for upstream since it's a temporary
+work-around for only ppc arches. Once the binutils defect in the
+gold linker is resolved, this patch can be dropped.
+
+Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -260,7 +260,7 @@
+         -Wl,-z,relro \
+         -Wl,-z,now \
+         -pie \
+-        -Wl,-fuse-ld=gold])
++        -Wl,-fuse-ld=bfd])
+ AC_SUBST([OUR_LDFLAGS], "$with_ldflags $sanitizer_ldflags")
+ 
+ AC_CHECK_SIZEOF(pid_t)
diff --git a/meta/recipes-core/systemd/systemd_232.bb b/meta/recipes-core/systemd/systemd_232.bb
index 1007360..1e8dffe 100644
--- a/meta/recipes-core/systemd/systemd_232.bb
+++ b/meta/recipes-core/systemd/systemd_232.bb
@@ -41,6 +41,8 @@ SRC_URI_append_libc-uclibc = "\
 "
 SRC_URI_append_qemuall = " file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
 
+SRC_URI_append_powerpc = " file://systemd-drop-gold-use-bfd.patch"
+
 PACKAGECONFIG ??= "xz \
                    ${@bb.utils.filter('DISTRO_FEATURES', 'efi pam selinux ldconfig', d)} \
                    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] systemd: work-around ppc gold linker error
  2017-06-22  2:14 [PATCH v2] systemd: work-around ppc gold linker error Randy MacLeod
@ 2017-06-22  4:34 ` Randy MacLeod
  2017-06-22 22:22   ` Khem Raj
  0 siblings, 1 reply; 5+ messages in thread
From: Randy MacLeod @ 2017-06-22  4:34 UTC (permalink / raw)
  To: openembedded-core

Merge if you like or wait for the real fix to binutils.

This bug has been around for more than a week
since the binutils upgrade was merged and
no one else seems to have noticed so it doesn't
seem urgent.

I needed the work-around to keep our auto-builders happy.
Oh and I did basic sanity testing to show that booting
and systemctl status works on qemuppc.

../Randy

On 2017-06-21 10:14 PM, Randy MacLeod wrote:
> If you enable systemd and build for qemuppc, then the
> compile of systemd fails due to a gold linker failure:
> 
>     .../powerpc-oe-linux-ld.gold:
>     error: invalid STB_LOCAL symbol in external symbols
>     error: linker defined: multiple definition of '00000001.plt_call.memcpy+8000'
>     command line: previous definition here
> 
> A git bisect confirms that the commit:
>     0b0f545 binutils-2.28: Update to latest on release branch
> is the problem. This is only known to affect powerpc machines.
> 
> Work-around this for powerpc by getting configure to use
> the bfd linker rather than the gold linker.
> 
> This unblocks powerpc use until the linker bug can be resolved.
> 
> Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> ---
>   .../systemd/systemd/systemd-drop-gold-use-bfd.patch   | 19 +++++++++++++++++++
>   meta/recipes-core/systemd/systemd_232.bb              |  2 ++
>   2 files changed, 21 insertions(+)
>   create mode 100644 meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
> 
> diff --git a/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch b/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
> new file mode 100644
> index 0000000..e0eb0bd
> --- /dev/null
> +++ b/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
> @@ -0,0 +1,19 @@
> +Upstream-Status: Inappropriate [other]
> +
> +The patch is not appropriate for upstream since it's a temporary
> +work-around for only ppc arches. Once the binutils defect in the
> +gold linker is resolved, this patch can be dropped.
> +
> +Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> +
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -260,7 +260,7 @@
> +         -Wl,-z,relro \
> +         -Wl,-z,now \
> +         -pie \
> +-        -Wl,-fuse-ld=gold])
> ++        -Wl,-fuse-ld=bfd])
> + AC_SUBST([OUR_LDFLAGS], "$with_ldflags $sanitizer_ldflags")
> +
> + AC_CHECK_SIZEOF(pid_t)
> diff --git a/meta/recipes-core/systemd/systemd_232.bb b/meta/recipes-core/systemd/systemd_232.bb
> index 1007360..1e8dffe 100644
> --- a/meta/recipes-core/systemd/systemd_232.bb
> +++ b/meta/recipes-core/systemd/systemd_232.bb
> @@ -41,6 +41,8 @@ SRC_URI_append_libc-uclibc = "\
>   "
>   SRC_URI_append_qemuall = " file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
>   
> +SRC_URI_append_powerpc = " file://systemd-drop-gold-use-bfd.patch"
> +
>   PACKAGECONFIG ??= "xz \
>                      ${@bb.utils.filter('DISTRO_FEATURES', 'efi pam selinux ldconfig', d)} \
>                      ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
> 


-- 
# Randy MacLeod. SMTS, Linux, Wind River
Direct: 613.963.1350 | 350 Terry Fox Drive, Suite 200, Ottawa, ON, 
Canada, K2K 2W5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] systemd: work-around ppc gold linker error
  2017-06-22  4:34 ` Randy MacLeod
@ 2017-06-22 22:22   ` Khem Raj
  2017-06-23  0:30     ` Randy MacLeod
  0 siblings, 1 reply; 5+ messages in thread
From: Khem Raj @ 2017-06-22 22:22 UTC (permalink / raw)
  To: Randy MacLeod, openembedded-core

[-- Attachment #1: Type: text/plain, Size: 3778 bytes --]

What's the link to upstream bug in linker

On Thu, Jun 22, 2017 at 12:34 AM Randy MacLeod <randy.macleod@windriver.com>
wrote:

> Merge if you like or wait for the real fix to binutils.
>
> This bug has been around for more than a week
> since the binutils upgrade was merged and
> no one else seems to have noticed so it doesn't
> seem urgent.
>
> I needed the work-around to keep our auto-builders happy.
> Oh and I did basic sanity testing to show that booting
> and systemctl status works on qemuppc.
>
> ../Randy
>
> On 2017-06-21 10:14 PM, Randy MacLeod wrote:
> > If you enable systemd and build for qemuppc, then the
> > compile of systemd fails due to a gold linker failure:
> >
> >     .../powerpc-oe-linux-ld.gold:
> >     error: invalid STB_LOCAL symbol in external symbols
> >     error: linker defined: multiple definition of
> '00000001.plt_call.memcpy+8000'
> >     command line: previous definition here
> >
> > A git bisect confirms that the commit:
> >     0b0f545 binutils-2.28: Update to latest on release branch
> > is the problem. This is only known to affect powerpc machines.
> >
> > Work-around this for powerpc by getting configure to use
> > the bfd linker rather than the gold linker.
> >
> > This unblocks powerpc use until the linker bug can be resolved.
> >
> > Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> > ---
> >   .../systemd/systemd/systemd-drop-gold-use-bfd.patch   | 19
> +++++++++++++++++++
> >   meta/recipes-core/systemd/systemd_232.bb              |  2 ++
> >   2 files changed, 21 insertions(+)
> >   create mode 100644
> meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
> >
> > diff --git
> a/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
> b/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
> > new file mode 100644
> > index 0000000..e0eb0bd
> > --- /dev/null
> > +++ b/meta/recipes-core/systemd/systemd/systemd-drop-gold-use-bfd.patch
> > @@ -0,0 +1,19 @@
> > +Upstream-Status: Inappropriate [other]
> > +
> > +The patch is not appropriate for upstream since it's a temporary
> > +work-around for only ppc arches. Once the binutils defect in the
> > +gold linker is resolved, this patch can be dropped.
> > +
> > +Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
> > +
> > +--- a/configure.ac
> > ++++ b/configure.ac
> > +@@ -260,7 +260,7 @@
> > +         -Wl,-z,relro \
> > +         -Wl,-z,now \
> > +         -pie \
> > +-        -Wl,-fuse-ld=gold])
> > ++        -Wl,-fuse-ld=bfd])
> > + AC_SUBST([OUR_LDFLAGS], "$with_ldflags $sanitizer_ldflags")
> > +
> > + AC_CHECK_SIZEOF(pid_t)
> > diff --git a/meta/recipes-core/systemd/systemd_232.bb
> b/meta/recipes-core/systemd/systemd_232.bb
> > index 1007360..1e8dffe 100644
> > --- a/meta/recipes-core/systemd/systemd_232.bb
> > +++ b/meta/recipes-core/systemd/systemd_232.bb
> > @@ -41,6 +41,8 @@ SRC_URI_append_libc-uclibc = "\
> >   "
> >   SRC_URI_append_qemuall = "
> file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
> >
> > +SRC_URI_append_powerpc = " file://systemd-drop-gold-use-bfd.patch"
> > +
> >   PACKAGECONFIG ??= "xz \
> >                      ${@bb.utils.filter('DISTRO_FEATURES', 'efi pam
> selinux ldconfig', d)} \
> >                      ${@bb.utils.contains('DISTRO_FEATURES', 'x11',
> 'xkbcommon', '', d)} \
> >
>
>
> --
> # Randy MacLeod. SMTS, Linux, Wind River
> Direct: 613.963.1350 | 350 Terry Fox Drive, Suite 200, Ottawa, ON,
> Canada, K2K 2W5
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>

[-- Attachment #2: Type: text/html, Size: 5375 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] systemd: work-around ppc gold linker error
  2017-06-22 22:22   ` Khem Raj
@ 2017-06-23  0:30     ` Randy MacLeod
  2017-06-26 21:21       ` Randy MacLeod
  0 siblings, 1 reply; 5+ messages in thread
From: Randy MacLeod @ 2017-06-23  0:30 UTC (permalink / raw)
  To: Khem Raj, openembedded-core

On 2017-06-22 06:22 PM, Khem Raj wrote:
> What's the link to upstream bug in linker

Do you mean: Have I created an upstream bug?

No, not yet but I'm just reading their email lists and
trying to understand where and how to report the bug.
If you'd like to do that and CC me, then the task will
finish sooner and I'll know for next time. :)


I've been taking the opportunity to see how we manage
binutils by adding a bintuils-2.29 this points to
master but I haven't gotten very far yet. My intent is
to see if this bug is reproducible on the bintuils
master branch since looking at:
    git log --oneline master ^binutils-2_28-branch gold/powerpc.cc
only turned up:

bdab445 [GOLD] PowerPC move plt indx_ out of unordered map key
94de2a2 [GOLD] Avoid duplicate PLT stub symbols on ppc32
590b87f PR21503, Gold doesn't create linker stub symbols on ppc64
6528b6e PowerPC ld segfault on script discarding dynamic sections
e666304 [GOLD] PowerPC64 TOC indirect to TOC relative segfault
857e829 Gold: Fix build with GCC 4.2
5edad15 [GOLD] PowerPC64 TOC indirect to TOC relative code editing
f159cdb [GOLD] Add --secure-plt option for ppc32
3254d32 [GOLD] Set sh_info of .rela.plt for powerpc
0e123f6 [GOLD] powerpc.cc tidies
2571583 Update year range in copyright notice of all files.

and after an initial quick review it seems that those commits
are either not relevant or have been cherry-picked back to
binutils-2_28-branch already.

I'll include my cleaned-up link failure summary below.
-- 
# Randy MacLeod. SMTS, Linux, Wind River
Direct: 613.963.1350 | 350 Terry Fox Drive, Suite 200, Ottawa, ON, 
Canada, K2K 2W5


--------


powerpc-oe-linux-libtool: link: powerpc-oe-linux-gcc  \
   -m32 -mhard-float -mcpu=7400 -mno-spe \
 
--sysroot=/.../tmp-glibc/work/ppc7400-oe-linux/systemd/1_232-r0/recipe-sysroot 
\
   -shared  -fPIC -DPIC  \
   src/basic/.libs/libsystemd_shared_la-capability-util.o \
   src/basic/.libs/libsystemd_shared_la-conf-files.o \
   src/basic/.libs/libsystemd_shared_la-hostname-util.o \
   ...
   src/libudev/.libs/libsystemd_shared_la-libudev-queue.o \
   src/libudev/.libs/libsystemd_shared_la-libudev-hwdb.o \
   -lcap -lrt -lm -lresolv -llzma -lacl  \
   -m32 -mhard-float -mcpu=7400 -mno-spe \
 
--sysroot=/.../tmp-glibc/work/ppc7400-oe-linux/systemd/1_232-r0/recipe-sysroot 
\
   -fstack-protector -fstack-protector-strong -flto -fstack-protector 
-fstack-protector-strong \
   -flto -pthread -fstack-protector -fstack-protector-strong -flto 
-fstack-protector -fstack-protector-strong \
   -flto -O2 -g \
   -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined \
   -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,-fuse-ld=gold \
   -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed   -pthread \
   -Wl,-soname -Wl,libsystemd-shared-232.so \
   -o .libs/libsystemd-shared-232.so
----------------------------------------------->>>
/.../tmp-glibc/work/ppc7400-oe-linux/systemd/1_232-r0/recipe-sysroot-native\
/usr/bin/powerpc-oe-linux/powerpc-oe-linux-ld.gold:
    error: invalid STB_LOCAL symbol in external symbols
    error: linker defined: multiple definition of 
'00000001.plt_call.memcpy+8000'
    command line: previous definition here
... <5577 more> ... with functions/symbols such as:
'00000001.plt_call.fflush_and_check+8000'
'00000001.plt_call.fileno+8000'
'00000001.plt_call.fchmod+8000'

| collect2: error: ld returned 1 exit status
| Makefile:11575: recipe for target 'libsystemd-shared.la' failed
| make[2]: *** [libsystemd-shared.la] Error 1
| Makefile:21970: recipe for target 'all-recursive' failed
| make[1]: *** [all-recursive] Error 1
| Makefile:9900: recipe for target 'all' failed
| make: *** [all] Error 2
| ERROR: oe_runmake failed

----------




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] systemd: work-around ppc gold linker error
  2017-06-23  0:30     ` Randy MacLeod
@ 2017-06-26 21:21       ` Randy MacLeod
  0 siblings, 0 replies; 5+ messages in thread
From: Randy MacLeod @ 2017-06-26 21:21 UTC (permalink / raw)
  To: Khem Raj, openembedded-core

On 2017-06-22 08:30 PM, Randy MacLeod wrote:
> On 2017-06-22 06:22 PM, Khem Raj wrote:
>> What's the link to upstream bug in linker
> 
> Do you mean: Have I created an upstream bug?
> 
> No, not yet but I'm just reading their email lists and
> trying to understand where and how to report the bug.

Done:
    https://sourceware.org/bugzilla/show_bug.cgi?id=21678

I haven't made any progress on testing master.
I should have time this week.

Oh, webkitgtk_2.16.1 also fails for qemuppc with a similar error.

-- 
# Randy MacLeod. SMTS, Linux, Wind River
Direct: 613.963.1350 | 350 Terry Fox Drive, Suite 200, Ottawa, ON, 
Canada, K2K 2W5


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-06-26 21:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-22  2:14 [PATCH v2] systemd: work-around ppc gold linker error Randy MacLeod
2017-06-22  4:34 ` Randy MacLeod
2017-06-22 22:22   ` Khem Raj
2017-06-23  0:30     ` Randy MacLeod
2017-06-26 21:21       ` Randy MacLeod

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.