Bug 12811 - meson: update to 0.46.0 breaks systemd on qemuppc
Summary: meson: update to 0.46.0 breaks systemd on qemuppc
Status: RESOLVED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: devtools / tool chain (show other bugs)
Version: 2.6
Hardware: x86 ppc
: Medium+ normal
Target Milestone: 2.6 M3
Assignee: Randy MacLeod
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2018-06-22 17:11 UTC by Randy MacLeod
Modified: 2018-09-21 02:40 UTC (History)
4 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: Don't know


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Randy MacLeod 2018-06-22 17:11:23 UTC
The meson update to 0.46.0 broke systemd on qemuppc for poky-lsb.
The libsystemd-shared.so size increased by 18% despite
the build flags being the same but using a different order.

You can work-around the problem by setting:
   SECURITY_CFLAGS_pn-systemd_powerpc = "${SECURITY_NO_PIE_CFLAGS}"
in:
   meta/conf/distro/include/security_flags.inc


I recently started testing qemuppc by booting
core-image-minimal with systemd as init. It fails with:

    /sbin/init: error while loading shared libraries:
       /lib/systemd/libsystemd-shared-237.so: R_PPC_REL24 relocation at 
0x0054574c for symbol `strlen' out of range

or in some cases:

   systemd[1]: \
      unhandled signal 11 at b804b784 nip 0070d184 lr 008ee1ac code 1
   Kernel panic - not syncing: \
      Attempted to kill init! exitcode=0x0000000b
when running:
     runqemu slirp nographic qemuppc ext4

The error only appears when using the distro poky-lsb
or a security template in the WR builds.

Adding:
meta/conf/distro/include/security_flags.inc
+SECURITY_CFLAGS_pn-systemd_powerpc = "${SECURITY_NO_PIE_CFLAGS}"

the systemd configure flags changed from:
        -no-pie -fno-PIE
to:
        -Wformat -Wformat-security -Werror=format-security
and the problem went away.

Being a sucker for punishment and having a nice builder on hand,
I decided to bisect the error anyway, assuming that I'd end up
at a systemd or toolchain uprev. Instead, I ended up at this
meson update being the culprit.


Here are the poky commits with the final stages of a
git bisect status appended:

53dfa673d7 musl: Upgrade to latest - bad
...
several bad results
...
96d783fa39 ifupdown: correct the repository location - bad
a6b62ef9ae meson: update to 0.46.0 - BAD
26fba81701 webkitgtk: update to 2.20.1 - good
4c52e22689 procps: update to 3.3.14 - untested
23320a2c9a libwebp: update to 1.0.0 - good
...
some good or unbuildable results
...

More info on the email thread:
http://lists.openembedded.org/pipermail/openembedded-core/2018-June/thread.html#152120
Comment 1 Randy MacLeod 2018-08-02 20:34:02 UTC
I've heard that Ross is working on updating meson to 0.47.1.
I can test as needed once there is a commit on the email list.
Comment 2 Randy MacLeod 2018-09-21 02:40:49 UTC
Resolved in master by:

commit 1520f5a345fd03d46f33f0efaf76191e96344bec
Author: Khem Raj <raj.khem@gmail.com>
Date:   Sun Aug 19 10:23:34 2018 -0700

    powerpc: Remove pie flags from compiler cmdline
    
    Original approach to add -no-<pie> flags cause link time behavior changes
    where packages start to lose the -fPIC -DPIC in compiler cmdline and this
    list keeps growing as we build more and more packages,
    
    Instead lets just remove the options we dont need from SECURITY_CFLAGS
    this makes it more robust and less intrusive
    
    This also means we do not need to re-add pic options as we started to do
    for affected packages
    
    Signed-off-by: Khem Raj <raj.khem@gmail.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

 meta/conf/distro/include/security_flags.inc | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)