1*4882a593Smuzhiyundef get_musl_loader_arch(d): 2*4882a593Smuzhiyun import re 3*4882a593Smuzhiyun ldso_arch = "NotSupported" 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun targetarch = d.getVar("TARGET_ARCH") 6*4882a593Smuzhiyun if targetarch.startswith("microblaze"): 7*4882a593Smuzhiyun ldso_arch = "microblaze${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'el', d)}" 8*4882a593Smuzhiyun elif targetarch.startswith("mips"): 9*4882a593Smuzhiyun ldso_arch = "mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}" 10*4882a593Smuzhiyun elif targetarch == "powerpc": 11*4882a593Smuzhiyun ldso_arch = "powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}" 12*4882a593Smuzhiyun elif targetarch.startswith("powerpc64"): 13*4882a593Smuzhiyun ldso_arch = "powerpc64${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'le', d)}" 14*4882a593Smuzhiyun elif targetarch == "x86_64": 15*4882a593Smuzhiyun ldso_arch = "x86_64" 16*4882a593Smuzhiyun elif re.search("i.86", targetarch): 17*4882a593Smuzhiyun ldso_arch = "i386" 18*4882a593Smuzhiyun elif targetarch.startswith("arm"): 19*4882a593Smuzhiyun ldso_arch = "arm${ARMPKGSFX_ENDIAN}${ARMPKGSFX_EABI}" 20*4882a593Smuzhiyun elif targetarch.startswith("aarch64"): 21*4882a593Smuzhiyun ldso_arch = "aarch64${ARMPKGSFX_ENDIAN_64}" 22*4882a593Smuzhiyun elif targetarch.startswith("riscv64"): 23*4882a593Smuzhiyun ldso_arch = "riscv64${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}" 24*4882a593Smuzhiyun elif targetarch.startswith("riscv32"): 25*4882a593Smuzhiyun ldso_arch = "riscv32${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}" 26*4882a593Smuzhiyun return ldso_arch 27*4882a593Smuzhiyun 28*4882a593Smuzhiyundef get_musl_loader(d): 29*4882a593Smuzhiyun import re 30*4882a593Smuzhiyun return "/lib/ld-musl-" + get_musl_loader_arch(d) + ".so.1" 31*4882a593Smuzhiyun 32*4882a593Smuzhiyundef get_glibc_loader(d): 33*4882a593Smuzhiyun import re 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun dynamic_loader = "NotSupported" 36*4882a593Smuzhiyun targetarch = d.getVar("TARGET_ARCH") 37*4882a593Smuzhiyun if targetarch in ["powerpc", "microblaze"]: 38*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld.so.1" 39*4882a593Smuzhiyun elif targetarch in ["mipsisa32r6el", "mipsisa32r6", "mipsisa64r6el", "mipsisa64r6"]: 40*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld-linux-mipsn8.so.1" 41*4882a593Smuzhiyun elif targetarch.startswith("mips"): 42*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld.so.1" 43*4882a593Smuzhiyun elif targetarch == "powerpc64le": 44*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld64.so.2" 45*4882a593Smuzhiyun elif targetarch == "powerpc64": 46*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld64.so.1" 47*4882a593Smuzhiyun elif targetarch == "x86_64": 48*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld-linux-x86-64.so.2" 49*4882a593Smuzhiyun elif re.search("i.86", targetarch): 50*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld-linux.so.2" 51*4882a593Smuzhiyun elif targetarch == "arm": 52*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld-linux${@['-armhf', ''][d.getVar('TARGET_FPU') == 'soft']}.so.3" 53*4882a593Smuzhiyun elif targetarch.startswith("aarch64"): 54*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld-linux-aarch64${ARMPKGSFX_ENDIAN_64}.so.1" 55*4882a593Smuzhiyun elif targetarch.startswith("riscv64"): 56*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld-linux-riscv64-lp64${@['d', ''][d.getVar('TARGET_FPU') == 'soft']}.so.1" 57*4882a593Smuzhiyun elif targetarch.startswith("riscv32"): 58*4882a593Smuzhiyun dynamic_loader = "${base_libdir}/ld-linux-riscv32-ilp32${@['d', ''][d.getVar('TARGET_FPU') == 'soft']}.so.1" 59*4882a593Smuzhiyun return dynamic_loader 60*4882a593Smuzhiyun 61*4882a593Smuzhiyundef get_linuxloader(d): 62*4882a593Smuzhiyun overrides = d.getVar("OVERRIDES").split(":") 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun if "libc-baremetal" in overrides: 65*4882a593Smuzhiyun return "NotSupported" 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun if "libc-musl" in overrides: 68*4882a593Smuzhiyun dynamic_loader = get_musl_loader(d) 69*4882a593Smuzhiyun else: 70*4882a593Smuzhiyun dynamic_loader = get_glibc_loader(d) 71*4882a593Smuzhiyun return dynamic_loader 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunget_linuxloader[vardepvalue] = "${@get_linuxloader(d)}" 74*4882a593Smuzhiyunget_musl_loader[vardepvalue] = "${@get_musl_loader(d)}" 75*4882a593Smuzhiyunget_musl_loader_arch[vardepvalue] = "${@get_musl_loader_arch(d)}" 76*4882a593Smuzhiyunget_glibc_loader[vardepvalue] = "${@get_glibc_loader(d)}" 77