[OE-core] [OE-Core][PATCH 00/13] powerpc/powerpc64: Support build with musl as libc
Khem Raj
raj.khem at gmail.com
Fri Dec 14 23:46:31 UTC 2018
Serhey
Thanks for doing this work and really a clean pull request with good
explanation that I have seen lately. Good work, For most parts
everything is in order except few places where I have replied
specifically to the patches
On Fri, Dec 14, 2018 at 9:55 AM Serhey Popovych
<serhe.popovych at gmail.com> wrote:
>
> Musl has support for ppc (32bit) and ppc64 (64bit). OE still missing
> several tricks in configuration to make builds possible:
>
> 1) Most important part is that musl implements elfv2 ABI only for
> 64bit PowerPC. That ABI is default for little-endian but supports
> big-endian too. Historically elfv1 ABI is used for big-endian
> PowerPC.
>
> 2) Using uncommon elfv2 ABI for big-endian requires to disable all
> assembler optimizations in openssl: unfortunately I can't find more
> smart way at the moment.
>
> 3) LDSO path need to be adjusted to support /lib64 path which is
> default for powerpc64 (see bitbake.conf) instead of $baselibdir.
>
> 4) Default library search path is hardcoded to
> "/lib:/usr/local/lib:/usr/lib": pass -DSYSLIBDIR and -DLIBDIR and
> use them to set path.
>
> 5) Need to add more tweaks to patch that adds --with-ldbl-128 knob
> to gcc configure: there is a set of functions that use TFtype in
> ppc64-fp.c in libgcc. This should be compatible with glibc.
>
> 6) Disable qemu-userspace for powerpc64 bit: there is no support.
> While there change qemuwrapper to exit explicitly to fix infinite
> execution in do_rootfs() task when building on IBM POWER8 machine.
>
> 7) Misc fixes that map powerpc-linux-musl python3 triplet to
> powerpc-linux-gnu, remove conflicting sed in do_configure() vs
> patch settings in gcc and fix DEFAULTTUNE settings for various
> IBM POWER platforms.
>
> Build is done on IBM POWER8 machine running RHEL7:
>
> Images:
> -------
> core-image-sato
> core-image-full-cmdline
>
> For powerpc64:
> --------------
> glibc musl
> systemd sysvinit systemd sysvinit
> gcc-7.3 y y y y
> gcc-8.2 y y y y
>
> For powerpc:
> ------------
> glibc musl
> systemd sysvinit systemd sysvinit
> gcc-7.3 n x x x (*)
> gcc-8.2 y y y y
>
> Note that gcc-7.3 builds for 32bit powerpc fail due to:
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=11754
>
> Kernel/images are boot tested using KVM-HV on IBM POWER8.
>
> Serhey Popovych (13):
> lib/oe/elf.py: Add powerpc64 architecture definition for musl
> tune-power[5-7].inc: Fix DEFAULTTUNE values
> tune-power[5-7].inc: Disable QEMU usermode usage
> qemuwrapper: Explicitly exit in case of no qemu supported for target
> arch-powerpc64.inc: Use elfv2 ABI when building with musl
> musl: Create default library search path based on configuration
> musl: Ensure GLIBC_LDSO symlink target does not exist on reinstall
> openssl: Skip assembler optimized code for powerpc64 with musl
> python3: Fix do_configure check platform triplet error (2)
> gcc: Fix preprocessor redefines for header pathes
> gcc: More places to patch to disable ldbl 128 for musl on PPC
> gcc: Enable secureplt for powerpc64 target too
> gcc-7.3,gcc-8.2: Use variable SYSTEMLIBS_DIR instead of hardcoding it
> for ppc64
>
> .../machine/include/powerpc/arch-powerpc64.inc | 3 +
> meta/conf/machine/include/tune-power5.inc | 5 +-
> meta/conf/machine/include/tune-power6.inc | 5 +-
> meta/conf/machine/include/tune-power7.inc | 5 +-
> meta/lib/oe/elf.py | 1 +
> .../openssl/openssl10_1.0.2q.bb | 1 +
> .../recipes-connectivity/openssl/openssl_1.1.1a.bb | 1 +
> ...slibdir-and-libdir-as-default-pathes-to-l.patch | 61 ++++
> meta/recipes-core/musl/musl_git.bb | 3 +-
> meta/recipes-devtools/gcc/gcc-7.3.inc | 1 +
> ...Ensure-target-gcc-headers-can-be-included.patch | 36 --
> ...44-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch | 391 ++++++++++++++++++++-
> ...werpc-powerpc64-Add-support-for-musl-ldso.patch | 31 ++
> meta/recipes-devtools/gcc/gcc-8.2.inc | 1 +
> ...Ensure-target-gcc-headers-can-be-included.patch | 36 --
> ...34-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch | 342 +++++++++++++++++-
> ...werpc-powerpc64-Add-support-for-musl-ldso.patch | 31 ++
> meta/recipes-devtools/gcc/gcc-common.inc | 2 +-
> .../tweak-MULTIARCH-for-powerpc-linux-musl.patch | 40 +++
> meta/recipes-devtools/python/python3_3.5.6.bb | 1 +
> .../recipes-devtools/qemu/qemuwrapper-cross_1.0.bb | 3 +-
> 21 files changed, 920 insertions(+), 80 deletions(-)
> create mode 100644 meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch
> create mode 100644 meta/recipes-devtools/gcc/gcc-7.3/0050-powerpc-powerpc64-Add-support-for-musl-ldso.patch
> create mode 100644 meta/recipes-devtools/gcc/gcc-8.2/0042-powerpc-powerpc64-Add-support-for-musl-ldso.patch
> create mode 100644 meta/recipes-devtools/python/python3/tweak-MULTIARCH-for-powerpc-linux-musl.patch
>
> --
> 2.7.4
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
More information about the Openembedded-core
mailing list