The dynamic loader will print an error about missing libraries, but will execute the binary regardless.
Alex On Fri, 4 Feb 2022 at 22:17, Christopher Larson <kerg...@gmail.com> wrote: > What will this do if uninative isn't enabled? > > On Fri, Feb 4, 2022 at 1:40 PM Alexander Kanavin <alex.kana...@gmail.com> > wrote: > >> Some of the host distributions build the drivers in a way (RPATH/RUNPATH) >> that tricks uninative loader into loading pieces of the host libc, if >> the same pieces haven't been previously loaded by native binaries. Mixing >> the two libc versions leads to failures. >> >> This change ensures that the correct (uninative) versions are always in >> use. >> >> Signed-off-by: Alexander Kanavin <a...@linutronix.de> >> --- >> meta/classes/qemuboot.bbclass | 2 +- >> scripts/runqemu | 4 ++++ >> 2 files changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/meta/classes/qemuboot.bbclass b/meta/classes/qemuboot.bbclass >> index cc1cbce69d..229bd88527 100644 >> --- a/meta/classes/qemuboot.bbclass >> +++ b/meta/classes/qemuboot.bbclass >> @@ -109,7 +109,7 @@ def qemuboot_vars(d): >> build_vars = ['MACHINE', 'TUNE_ARCH', 'DEPLOY_DIR_IMAGE', >> 'KERNEL_IMAGETYPE', 'IMAGE_NAME', 'IMAGE_LINK_NAME', >> 'STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE', >> - 'STAGING_DIR_HOST', 'SERIAL_CONSOLES'] >> + 'STAGING_DIR_HOST', 'SERIAL_CONSOLES', >> 'UNINATIVE_LOADER'] >> return build_vars + [k for k in d.keys() if k.startswith('QB_')] >> >> do_write_qemuboot_conf[vardeps] += "${@' '.join(qemuboot_vars(d))}" >> diff --git a/scripts/runqemu b/scripts/runqemu >> index 4e05c1bb15..7d1f85f357 100755 >> --- a/scripts/runqemu >> +++ b/scripts/runqemu >> @@ -460,6 +460,10 @@ class BaseConfig(object): >> except subprocess.CalledProcessError as e: >> raise RunQemuError("Could not determine the path to dri >> drivers on the host via pkg-config.\nPlease install Mesa development files >> (particularly, dri.pc) on the host machine.") >> os.environ['LIBGL_DRIVERS_PATH'] = >> dripath.decode('utf-8').strip() >> + uninative_path = os.path.dirname(self.get("UNINATIVE_LOADER")) >> + preload_items = ['libdl.so.2', 'librt.so.1', 'libpthread.so.0'] >> + preload_paths = [os.path.join(uninative_path, i) for i in >> preload_items] >> + os.environ['LD_PRELOAD'] = " ".join(preload_paths) >> >> def check_args(self): >> for debug in ("-d", "--debug"): >> -- >> 2.20.1 >> >> >> >> >> > > -- > Christopher Larson > kergoth at gmail dot com > Founder - BitBake, OpenEmbedded, OpenZaurus > Senior Software Engineer, Mentor Graphics >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#161385): https://lists.openembedded.org/g/openembedded-core/message/161385 Mute This Topic: https://lists.openembedded.org/mt/88916306/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-