aboutsummaryrefslogtreecommitdiff
path: root/board/qemu
diff options
context:
space:
mode:
authorGravatar Romain Naour <romain.naour@gmail.com>2020-11-24 21:30:21 +0100
committerGravatar Thomas Petazzoni <thomas.petazzoni@bootlin.com>2020-12-05 22:34:28 +0100
commit3fc3289a3f83e1b8193a34e2b48957034deaa873 (patch)
treef5f33a698fc1db21d10f5dc2ed57ddb844e9eb5e /board/qemu
parent7c48c677a9f5f9113b38d21030e7b103749d2463 (diff)
downloadbuildroot-3fc3289a3f83e1b8193a34e2b48957034deaa873.tar.gz
buildroot-3fc3289a3f83e1b8193a34e2b48957034deaa873.tar.bz2
board/qemu/post-image.sh: execute from BINARIES_DIR
Usually the qemu command line start directly with "qemu-system-<arch> ...". But the command line for qemu_arm_vexpress_tz_defconfig start by doing "cd output/images && ../host/bin/qemu-system-arm". This is necessary since boot binaries, except BL1, are primarily loaded via semi-hosting so all binaries has to reside in the same directory as QEMU is started from [1]. To order to handle this case correctly, update the post-image.sh used by all qemu defconfigs to execute qemu from BINARIES_DIR. Since we have to change the current directory use a subshell to restore the current directory after Qemu execution. [1] https://github.com/ARM-software/arm-trusted-firmware/blob/4ebbea9592ab37fc62217d0ac62fa13a3e063527/docs/plat/qemu.rst Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Diffstat (limited to 'board/qemu')
-rwxr-xr-xboard/qemu/post-image.sh9
1 files changed, 6 insertions, 3 deletions
diff --git a/board/qemu/post-image.sh b/board/qemu/post-image.sh
index f34bf5043a..404f77411c 100755
--- a/board/qemu/post-image.sh
+++ b/board/qemu/post-image.sh
@@ -19,9 +19,9 @@ if [ -z "${QEMU_CMD_LINE}" ]; then
exit 0
fi
-# Replace output/images path by ${BINARIES_DIR} since the script
-# will be in the same directory as the kernel and the rootfs images.
-QEMU_CMD_LINE="${QEMU_CMD_LINE//output\/images/\${BINARIES_DIR\}}"
+# Remove output/images path since the script will be in
+# the same directory as the kernel and the rootfs images.
+QEMU_CMD_LINE="${QEMU_CMD_LINE//output\/images\//}"
# Remove -serial stdio if present, keep it as default args
DEFAULT_ARGS="$(sed -r -e '/-serial stdio/!d; s/.*(-serial stdio).*/\1/' <<<"${QEMU_CMD_LINE}")"
@@ -40,7 +40,9 @@ esac
cat <<-_EOF_ > "${START_QEMU_SCRIPT}"
#!/bin/sh
+ (
BINARIES_DIR="\${0%/*}/"
+ cd \${BINARIES_DIR}
if [ "\${1}" = "serial-only" ]; then
EXTRA_ARGS='${SERIAL_ARGS}'
@@ -50,6 +52,7 @@ cat <<-_EOF_ > "${START_QEMU_SCRIPT}"
export PATH="${HOST_DIR}/bin:\${PATH}"
exec ${QEMU_CMD_LINE} \${EXTRA_ARGS}
+ )
_EOF_
chmod +x "${START_QEMU_SCRIPT}"