From 59ec03c5bc27e167eed957ba95b9a364612903b2 Mon Sep 17 00:00:00 2001 From: Ming Liu Date: Thu, 6 Jul 2017 13:50:31 +0200 Subject: linuxloader.bbclass: add musl libc support Current linuxloader.bbclass does not support musl libc ldso, so add it in. After changing, now the linuxloader function will call a subfunction according to which virtual/libc is being used, glibc or musl, the linuxloader_musl function is made on top of the LDSO macro defined in musl source, by mapping related OE variables to it. Change tested on following machines: "genericx86" "genericx86-64" "beaglebone" "qemumips64" "qemuarm64" "mpc8315e-rdb" "edgerouter" "qemumips" "kc705-microblazeel" - meta-xilinx "qemuppc" (From OE-Core rev: 5d4acaed81a811912e60d85c507bee819623369e) Signed-off-by: Ming Liu Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/classes/linuxloader.bbclass | 42 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'meta/classes/linuxloader.bbclass') diff --git a/meta/classes/linuxloader.bbclass b/meta/classes/linuxloader.bbclass index 117b030746..8f30eb32e7 100644 --- a/meta/classes/linuxloader.bbclass +++ b/meta/classes/linuxloader.bbclass @@ -1,5 +1,8 @@ +LDSO_TCLIBC = "glibc" +LDSO_TCLIBC_libc-musl = "musl" +LDSO_TCLIBC_libc-baremetal = "musl" -linuxloader () { +linuxloader_glibc () { case ${TARGET_ARCH} in powerpc | microblaze ) dynamic_loader="${base_libdir}/ld.so.1" @@ -28,3 +31,40 @@ linuxloader () { esac echo $dynamic_loader } + +linuxloader_musl () { + case ${TARGET_ARCH} in + microblaze* ) + dynamic_loader="${base_libdir}/ld-musl-microblaze${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el' ,d)}.so.1" + ;; + mips* ) + dynamic_loader="${base_libdir}/ld-musl-mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1" + ;; + powerpc ) + dynamic_loader="${base_libdir}/ld-musl-powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}.so.1" + ;; + powerpc64 ) + dynamic_loader="${base_libdir}/ld-musl-powerpc64.so.1" + ;; + x86_64 ) + dynamic_loader="${base_libdir}/ld-musl-x86_64.so.1" + ;; + i*86 ) + dynamic_loader="${base_libdir}/ld-musl-i386.so.1" + ;; + arm* ) + dynamic_loader="${base_libdir}/ld-musl-arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}.so.1" + ;; + aarch64* ) + dynamic_loader="${base_libdir}/ld-musl-aarch64${ARMPKGSFX_ENDIAN_64}.so.1" + ;; + * ) + dynamic_loader="/unknown_dynamic_linker" + ;; + esac + echo $dynamic_loader +} + +linuxloader () { + linuxloader_${LDSO_TCLIBC} +} -- cgit v1.2.3-54-g00ecf