configs: Add --redirects for syscall emulation
This is the first step towards being able to run dynamically linked
applications when the guest ISA != than host ISA.
(Like running a arm application on x86)
By using the --redirects command line option it is possible to specify
via CLI a set of path redirections to be used in SE mode.
This is needed when running a dynamically linked binary in
SE mode in a guest ISA different than the host. The linker will look
for SOs (e.g. libc.so) in /lib/, but will only find the host libraries.
With this option we can redirect to the guest toolchain/file system.
Usage:
gem5.opt [example script]
--redirects /dir1=/path/to/host/dir1 \
--redirects /dir2=/path/to/host/dir2
Change-Id: I558838be2ad6802891707e9a1cc454786859db15
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23065
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -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) 2015 Advanced Micro Devices, Inc.
|
||||
# All rights reserved
|
||||
#
|
||||
@@ -206,6 +218,14 @@ def _redirect_paths(options):
|
||||
RedirectPath(app_path = "/tmp",
|
||||
host_paths = ["%s/fs/tmp" % m5.options.outdir])]
|
||||
|
||||
# Setting the redirect paths so that the guest dynamic linker
|
||||
# can point to the proper /lib collection (e.g. to load libc)
|
||||
redirects = getattr(options, 'redirects', [])
|
||||
for redirect in redirects:
|
||||
app_path, host_path = redirect.split("=")
|
||||
redirect_paths.append(
|
||||
RedirectPath(app_path = app_path, host_paths = [ host_path ]))
|
||||
|
||||
chroot = getattr(options, 'chroot', None)
|
||||
if chroot:
|
||||
redirect_paths.append(
|
||||
|
||||
Reference in New Issue
Block a user