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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to