[Qemu-devel] [RFC PATCH-for-4.1? v2 0/5] semihosting: Build with CONFIG_SEMIHOSTING disabled

Philippe Mathieu-Daudé posted 5 patches 4 years, 9 months ago
Test docker-clang@ubuntu failed
Test asan passed
Test docker-mingw@fedora passed
Test FreeBSD passed
Test s390x failed
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190715152225.26135-1-philmd@redhat.com
Maintainers: Aurelien Jarno <aurelien@aurel32.net>, Aleksandar Rikalo <arikalo@wavecomp.com>, Laurent Vivier <laurent@vivier.eu>, "Alex Bennée" <alex.bennee@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, Riku Voipio <riku.voipio@iki.fi>, Aleksandar Markovic <amarkovic@wavecomp.com>
default-configs/aarch64-linux-user-common.mak |  4 ++++
default-configs/aarch64-linux-user.mak        |  2 ++
default-configs/aarch64_be-linux-user.mak     |  2 ++
default-configs/arm-linux-user-common.mak     |  4 ++++
default-configs/arm-linux-user.mak            |  2 ++
default-configs/arm-softmmu.mak               |  4 +++-
default-configs/armeb-linux-user.mak          |  2 ++
default-configs/mips-linux-user-common.mak    |  4 ++++
default-configs/mips-linux-user.mak           |  2 ++
default-configs/mips-softmmu-common.mak       |  2 +-
default-configs/mips64-linux-user.mak         |  2 ++
default-configs/mips64el-linux-user.mak       |  2 ++
default-configs/mipsel-linux-user.mak         |  2 ++
default-configs/mipsn32-linux-user.mak        |  2 ++
default-configs/mipsn32el-linux-user.mak      |  2 ++
hw/semihosting/Kconfig                        |  3 ++-
target/arm/Makefile.objs                      |  3 ++-
target/arm/arm-semi-stubs.c                   | 21 ++++++++++++++++++
target/mips/Makefile.objs                     |  3 ++-
target/mips/mips-semi-stubs.c                 | 22 +++++++++++++++++++
20 files changed, 85 insertions(+), 5 deletions(-)
create mode 100644 default-configs/aarch64-linux-user-common.mak
create mode 100644 default-configs/arm-linux-user-common.mak
create mode 100644 default-configs/mips-linux-user-common.mak
create mode 100644 target/arm/arm-semi-stubs.c
create mode 100644 target/mips/mips-semi-stubs.c
[Qemu-devel] [RFC PATCH-for-4.1? v2 0/5] semihosting: Build with CONFIG_SEMIHOSTING disabled
Posted by Philippe Mathieu-Daudé 4 years, 9 months ago
Amusingly Miroslav and myself hit this issue at the same time.

Note now that "config-devices.h" exists (commit 6c22ea9d83) I could use
#include "config-devices.h" to implement Alex's suggestion to avoid a stub:
https://lists.gnu.org/archive/html/qemu-devel/2019-06/msg03607.html

Some know (arch-specific) limitations are:

- MIPS ITU is accessed by coprocessor instr (ISA feature)
- MIPS timer is accessed by coprocessor instr (ISA feature)
- MIPS semihosting (ISA feature?)
- ARM semihosting (ISA feature?)
- ARMv7 NVIC (device)

This series attempt to fix this the most trivial way, adding
stubs for unreachable code.

Since v1: https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg07267.html
- Always enable semihosting on linux-user

$ git backport-diff -u v1
Key:
[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only (new)
The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively

001/5:[down] 'target/arm: Always enable CONFIG_SEMIHOSTING'
002/5:[down] 'target/mips: Always enable CONFIG_SEMIHOSTING'
003/5:[down] 'hw/semihosting: Allow this feature to be disabled'
004/5:[0004] [FC] 'target/arm: Add stubs to build with CONFIG_SEMIHOSTING disabled'
005/5:[0005] [FC] 'target/mips: Add stubs to build with CONFIG_SEMIHOSTING disabled'

Philippe Mathieu-Daudé (5):
  target/arm: Always enable CONFIG_SEMIHOSTING
  target/mips: Always enable CONFIG_SEMIHOSTING
  hw/semihosting: Allow this feature to be disabled
  target/arm: Add stubs to build with CONFIG_SEMIHOSTING disabled
  target/mips: Add stubs to build with CONFIG_SEMIHOSTING disabled

 default-configs/aarch64-linux-user-common.mak |  4 ++++
 default-configs/aarch64-linux-user.mak        |  2 ++
 default-configs/aarch64_be-linux-user.mak     |  2 ++
 default-configs/arm-linux-user-common.mak     |  4 ++++
 default-configs/arm-linux-user.mak            |  2 ++
 default-configs/arm-softmmu.mak               |  4 +++-
 default-configs/armeb-linux-user.mak          |  2 ++
 default-configs/mips-linux-user-common.mak    |  4 ++++
 default-configs/mips-linux-user.mak           |  2 ++
 default-configs/mips-softmmu-common.mak       |  2 +-
 default-configs/mips64-linux-user.mak         |  2 ++
 default-configs/mips64el-linux-user.mak       |  2 ++
 default-configs/mipsel-linux-user.mak         |  2 ++
 default-configs/mipsn32-linux-user.mak        |  2 ++
 default-configs/mipsn32el-linux-user.mak      |  2 ++
 hw/semihosting/Kconfig                        |  3 ++-
 target/arm/Makefile.objs                      |  3 ++-
 target/arm/arm-semi-stubs.c                   | 21 ++++++++++++++++++
 target/mips/Makefile.objs                     |  3 ++-
 target/mips/mips-semi-stubs.c                 | 22 +++++++++++++++++++
 20 files changed, 85 insertions(+), 5 deletions(-)
 create mode 100644 default-configs/aarch64-linux-user-common.mak
 create mode 100644 default-configs/arm-linux-user-common.mak
 create mode 100644 default-configs/mips-linux-user-common.mak
 create mode 100644 target/arm/arm-semi-stubs.c
 create mode 100644 target/mips/mips-semi-stubs.c

-- 
2.20.1


Re: [Qemu-devel] [RFC PATCH-for-4.1? v2 0/5] semihosting: Build with CONFIG_SEMIHOSTING disabled
Posted by Philippe Mathieu-Daudé 4 years, 9 months ago
On 7/15/19 5:22 PM, Philippe Mathieu-Daudé wrote:
> Amusingly Miroslav and myself hit this issue at the same time.
> 
> Note now that "config-devices.h" exists (commit 6c22ea9d83) I could use
> #include "config-devices.h" to implement Alex's suggestion to avoid a stub:
> https://lists.gnu.org/archive/html/qemu-devel/2019-06/msg03607.html
> 
> Some know (arch-specific) limitations are:
> 
> - MIPS ITU is accessed by coprocessor instr (ISA feature)
> - MIPS timer is accessed by coprocessor instr (ISA feature)
> - MIPS semihosting (ISA feature?)
> - ARM semihosting (ISA feature?)
> - ARMv7 NVIC (device)
> 
> This series attempt to fix this the most trivial way, adding
> stubs for unreachable code.

Please disregard this series for 4.1 release.

As explained Peter on IRC, "feature changes need to be ready before
softfreeze".

Re: [Qemu-devel] [RFC PATCH-for-4.1? v2 0/5] semihosting: Build with CONFIG_SEMIHOSTING disabled
Posted by no-reply@patchew.org 4 years, 9 months ago
Patchew URL: https://patchew.org/QEMU/20190715152225.26135-1-philmd@redhat.com/



Hi,

This series failed build test on s390x host. Please find the details below.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e

echo
echo "=== ENV ==="
env

echo
echo "=== PACKAGES ==="
rpm -qa

echo
echo "=== UNAME ==="
uname -a

CC=$HOME/bin/cc
INSTALL=$PWD/install
BUILD=$PWD/build
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL
make -j4
# XXX: we need reliable clean up
# make check -j4 V=1
make install
=== TEST SCRIPT END ===

  CC      mips64-linux-user/linux-user/fd-trans.o
  CC      mips64-linux-user/target/mips/translate.o
  CC      mips64el-linux-user/target/mips/mips-semi-stubs.o
/var/tmp/patchew-tester-tmp-n0mrs_zw/src/target/mips/mips-semi-stubs.c:19:6: error: no previous prototype for ‘helper_do_semihosting’ [-Werror=missing-prototypes]
   19 | void helper_do_semihosting(CPUMIPSState *env)
      |      ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
---
  CC      mipsel-linux-user/target/mips/translate.o
  CC      mips64-linux-user/target/mips/msa_helper.o
  CC      mips64-linux-user/target/mips/mips-semi-stubs.o
/var/tmp/patchew-tester-tmp-n0mrs_zw/src/target/mips/mips-semi-stubs.c:19:6: error: no previous prototype for ‘helper_do_semihosting’ [-Werror=missing-prototypes]
   19 | void helper_do_semihosting(CPUMIPSState *env)
      |      ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
---
  CC      mipsel-linux-user/target/mips/mips-semi-stubs.o
  GEN     trace/generated-helpers.c
  CC      mipsel-linux-user/trace/control-target.o
/var/tmp/patchew-tester-tmp-n0mrs_zw/src/target/mips/mips-semi-stubs.c:19:6: error: no previous prototype for ‘helper_do_semihosting’ [-Werror=missing-prototypes]
   19 | void helper_do_semihosting(CPUMIPSState *env)
      |      ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors


The full log is available at
http://patchew.org/logs/20190715152225.26135-1-philmd@redhat.com/testing.s390x/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Re: [Qemu-devel] [RFC PATCH-for-4.1? v2 0/5] semihosting: Build with CONFIG_SEMIHOSTING disabled
Posted by no-reply@patchew.org 4 years, 9 months ago
Patchew URL: https://patchew.org/QEMU/20190715152225.26135-1-philmd@redhat.com/



Hi,

This series failed build test on s390x host. Please find the details below.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e

echo
echo "=== ENV ==="
env

echo
echo "=== PACKAGES ==="
rpm -qa

echo
echo "=== UNAME ==="
uname -a

CC=$HOME/bin/cc
INSTALL=$PWD/install
BUILD=$PWD/build
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL
make -j4
# XXX: we need reliable clean up
# make check -j4 V=1
make install
=== TEST SCRIPT END ===

  CC      mips-linux-user/target/mips/gdbstub.o
  CC      mips-linux-user/target/mips/msa_helper.o
  CC      mipsel-linux-user/target/mips/mips-semi-stubs.o
/var/tmp/patchew-tester-tmp-3dkdm5ft/src/target/mips/mips-semi-stubs.c:19:6: error: no previous prototype for ‘helper_do_semihosting’ [-Werror=missing-prototypes]
   19 | void helper_do_semihosting(CPUMIPSState *env)
      |      ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
---
  CC      mips64-linux-user/fpu/softfloat.o
  CC      mips-linux-user/target/mips/mips-semi-stubs.o
  CC      mips64-linux-user/gdbstub.o
/var/tmp/patchew-tester-tmp-3dkdm5ft/src/target/mips/mips-semi-stubs.c:19:6: error: no previous prototype for ‘helper_do_semihosting’ [-Werror=missing-prototypes]
   19 | void helper_do_semihosting(CPUMIPSState *env)
      |      ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
---
  CC      mips64-linux-user/accel/tcg/tcg-runtime-gvec.o
  CC      mips64el-linux-user/target/mips/mips-semi-stubs.o
  CC      mips64-linux-user/accel/tcg/cpu-exec.o
/var/tmp/patchew-tester-tmp-3dkdm5ft/src/target/mips/mips-semi-stubs.c:19:6: error: no previous prototype for ‘helper_do_semihosting’ [-Werror=missing-prototypes]
   19 | void helper_do_semihosting(CPUMIPSState *env)
      |      ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
---
  CC      mips64-linux-user/target/mips/gdbstub.o
  CC      mips64-linux-user/target/mips/msa_helper.o
  CC      mips64-linux-user/target/mips/mips-semi-stubs.o
/var/tmp/patchew-tester-tmp-3dkdm5ft/src/target/mips/mips-semi-stubs.c:19:6: error: no previous prototype for ‘helper_do_semihosting’ [-Werror=missing-prototypes]
   19 | void helper_do_semihosting(CPUMIPSState *env)
      |      ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors


The full log is available at
http://patchew.org/logs/20190715152225.26135-1-philmd@redhat.com/testing.s390x/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com