diff options
author | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2019-11-25 14:03:46 +0000 |
---|---|---|
committer | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2019-11-27 23:30:05 +0000 |
commit | 2a0140593f652f446464be1f0e01e5c1f9069a4b (patch) | |
tree | 88ce2c3966b70d50a09987fa4ebeb2ed2c6771c9 /src/python | |
parent | 8e493b5fd275cdb15513dc3466ca4b108ab688e2 (diff) | |
download | gem5-2a0140593f652f446464be1f0e01e5c1f9069a4b.tar.xz |
base, python: Allow dirname selection for the interpreter
This is the second step towards being able to run dynamically linked
applications when the guest ISA != than host ISA.
Once the guest interpreter is loaded to memory, we are able to redirect
shared object loads through the redirectPath interface.
How do we load the guest interpreter?
The elf file is for example asking for the /lib/ld-linux-aarch64.so
interpreter.
That would point to a valid dynamic linker/loader if guest ISA == host
ISA, but if we are running on X86 we should point to the guest
(aarch64 in the example) toolchain wherever it is installed.
This patch is adding the --interp-dir option to point to the parent
folder of the guest /lib in the host fs.
Change-Id: Id27b97c060008d2e847776a49323d45c8809a27f
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23066
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/python')
-rw-r--r-- | src/python/m5/core.py | 13 | ||||
-rw-r--r-- | src/python/pybind11/core.cc | 10 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/python/m5/core.py b/src/python/m5/core.py index 4c94353aa..c8c57fcef 100644 --- a/src/python/m5/core.py +++ b/src/python/m5/core.py @@ -1,3 +1,15 @@ +# Copyright (c) 2019 ARM Limited +# All rights reserved. +# +# The license below extends only to copyright in the software and shall +# not be construed as granting a license to any other intellectual +# property including but not limited to intellectual property relating +# to a hardware implementation of the functionality of the software +# licensed hereunder. You may use the software subject to the license +# terms below provided that you ensure that this notice is replicated +# unmodified and in its entirety in all distributions of the software, +# modified or unmodified, in source code or in binary form. +# # Copyright (c) 2008 The Hewlett-Packard Development Company # All rights reserved. # @@ -30,3 +42,4 @@ from __future__ import print_function from __future__ import absolute_import from _m5.core import setOutputDir +from _m5.loader import setInterpDir diff --git a/src/python/pybind11/core.cc b/src/python/pybind11/core.cc index 3523c0639..2cfaecd45 100644 --- a/src/python/pybind11/core.cc +++ b/src/python/pybind11/core.cc @@ -53,6 +53,7 @@ #include "base/addr_range.hh" #include "base/inet.hh" +#include "base/loader/elf_object.hh" #include "base/logging.hh" #include "base/random.hh" #include "base/socket.hh" @@ -202,6 +203,14 @@ init_net(py::module &m_native) ; } +static void +init_loader(py::module &m_native) +{ + py::module m = m_native.def_submodule("loader"); + + m.def("setInterpDir", &setInterpDir); +} + void pybind_init_core(py::module &m_native) { @@ -281,5 +290,6 @@ pybind_init_core(py::module &m_native) init_serialize(m_native); init_range(m_native); init_net(m_native); + init_loader(m_native); } |