mbox

[PULL,00/30] testing, gdbstub and semihosting

Message ID 20210115130828.23968-1-alex.bennee@linaro.org (mailing list archive)
State New, archived
Headers show

Pull-request

https://github.com/stsquad/qemu.git tags/pull-testing-and-misc-150121-1

Message

Alex Bennée Jan. 15, 2021, 1:07 p.m. UTC
The following changes since commit 7c79721606be11b5bc556449e5bcbc331ef6867d:

  Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210113' into staging (2021-01-14 09:54:29 +0000)

are available in the Git repository at:

  https://github.com/stsquad/qemu.git tags/pull-testing-and-misc-150121-1

for you to fetch changes up to be846761ca8b5a7e2e7b7108c8c156126b799824:

  semihosting: Implement SYS_ISERROR (2021-01-15 11:12:34 +0000)

----------------------------------------------------------------
Testing, gdbstub and semihosting patches:

  - clean-ups to docker images
  - drop duplicate jobs from shippable
  - prettier tag generation (+gtags)
  - generate browsable source tree
  - more Travis->GitLab migrations
  - fix checkpatch to deal with commits
  - gate gdbstub tests on 8.3.1, expand tests
  - support Xfer:auxv:read gdb packet
  - better gdbstub cleanup
  - use GDB's SVE register layout
  - make arm-compat-semihosting common
  - add riscv semihosting support
  - add HEAPINFO, ELAPSED, TICKFREQ, TMPNAM and ISERROR to semihosting

----------------------------------------------------------------
Alessandro Di Federico (1):
      Add newline when generating Dockerfile

Alex Bennée (16):
      Makefile: add GNU global tags support
      Makefile: wrap ctags in quiet-command calls
      Makefile: wrap etags in quiet-command calls
      Makefile: wrap cscope in quiet-command calls
      docker: expand debian-amd64 image to include tag tools
      gitlab: move docs and tools build across from Travis
      gitlab: migrate the minimal tools and unit tests from Travis
      scripts/checkpatch.pl: fix git-show invocation to include diffstat
      test/guest-debug: echo QEMU command as well
      configure: gate our use of GDB to 8.3.1 or above
      Revert "tests/tcg/multiarch/Makefile.target: Disable run-gdbstub-sha1 test"
      gdbstub: implement a softmmu based test
      gdbstub: drop CPUEnv from gdb_exit()
      gdbstub: drop gdbserver_cleanup in favour of gdb_exit
      gdbstub: ensure we clean-up when terminated
      target/arm: use official org.gnu.gdb.aarch64.sve layout for registers

Keith Packard (8):
      semihosting: Move ARM semihosting code to shared directories
      semihosting: Change common-semi API to be architecture-independent
      semihosting: Change internal common-semi interfaces to use CPUState *
      semihosting: Support SYS_HEAPINFO when env->boot_info is not set
      riscv: Add semihosting support
      semihosting: Implement SYS_ELAPSED and SYS_TICKFREQ
      semihosting: Implement SYS_TMPNAM
      semihosting: Implement SYS_ISERROR

Kito Cheng (1):
      riscv: Add semihosting support for user mode

Lirong Yuan (1):
      gdbstub: add support to Xfer:auxv:read: packet

Lukas Straub (1):
      Fix build with new yank feature by adding stubs

Philippe Mathieu-Daudé (2):
      tests/docker: Remove Debian 9 remnant lines
      shippable.yml: Remove jobs duplicated on Gitlab-CI

 configure                                          |   7 +-
 Makefile                                           |  46 +-
 default-configs/devices/arm-softmmu.mak            |   1 +
 default-configs/devices/riscv32-softmmu.mak        |   2 +
 default-configs/devices/riscv64-softmmu.mak        |   2 +
 default-configs/targets/aarch64-linux-user.mak     |   1 +
 default-configs/targets/aarch64_be-linux-user.mak  |   1 +
 default-configs/targets/arm-linux-user.mak         |   1 +
 default-configs/targets/armeb-linux-user.mak       |   1 +
 default-configs/targets/riscv32-linux-user.mak     |   1 +
 default-configs/targets/riscv64-linux-user.mak     |   1 +
 hw/semihosting/common-semi.h                       |  39 ++
 include/exec/gdbstub.h                             |  14 +-
 include/qemu/timer.h                               |   2 +
 linux-user/qemu.h                                  |   4 +-
 target/arm/cpu.h                                   |   8 -
 target/riscv/cpu_bits.h                            |   1 +
 bsd-user/syscall.c                                 |   6 +-
 gdbstub.c                                          |  65 ++-
 .../arm-semi.c => hw/semihosting/arm-compat-semi.c | 525 ++++++++++++++-------
 linux-user/aarch64/cpu_loop.c                      |   3 +-
 linux-user/arm/cpu_loop.c                          |   3 +-
 linux-user/exit.c                                  |   2 +-
 linux-user/riscv/cpu_loop.c                        |   5 +
 linux-user/{arm => }/semihost.c                    |   8 +-
 softmmu/runstate.c                                 |   2 +-
 stubs/yank.c                                       |  29 ++
 target/arm/gdbstub.c                               |  75 ++-
 target/arm/helper.c                                |   7 +-
 target/arm/m_helper.c                              |   7 +-
 target/m68k/m68k-semi.c                            |   2 +-
 target/nios2/nios2-semi.c                          |   2 +-
 target/riscv/cpu_helper.c                          |  10 +
 target/riscv/translate.c                           |  11 +
 util/qemu-timer-common.c                           |   4 +
 target/riscv/insn_trans/trans_privileged.c.inc     |  37 +-
 .gitignore                                         |   3 +
 .gitlab-ci.yml                                     |  30 +-
 .shippable.yml                                     |  14 +-
 .travis.yml                                        |  25 -
 MAINTAINERS                                        |   2 +
 hw/semihosting/Kconfig                             |   4 +
 hw/semihosting/meson.build                         |   3 +
 linux-user/arm/meson.build                         |   3 -
 linux-user/meson.build                             |   1 +
 qemu-options.hx                                    |  10 +-
 scripts/checkpatch.pl                              |   2 +-
 stubs/meson.build                                  |   1 +
 target/arm/meson.build                             |   2 -
 tests/docker/Makefile.include                      |   1 -
 tests/docker/docker.py                             |   4 +-
 tests/docker/dockerfiles/debian-amd64.docker       |   5 +-
 tests/guest-debug/run-test.py                      |  35 +-
 tests/tcg/aarch64/Makefile.softmmu-target          |   1 +
 tests/tcg/aarch64/gdbstub/test-sve-ioctl.py        |  11 +
 tests/tcg/aarch64/system/boot.S                    |   1 +
 tests/tcg/i386/Makefile.softmmu-target             |   1 +
 tests/tcg/i386/system/boot.S                       |   2 +-
 tests/tcg/multiarch/Makefile.target                |  13 +-
 tests/tcg/multiarch/gdbstub/memory.py              | 130 +++++
 .../tcg/multiarch/gdbstub/test-qxfer-auxv-read.py  |  57 +++
 tests/tcg/multiarch/system/Makefile.softmmu-target |  19 +-
 tests/tcg/x86_64/Makefile.softmmu-target           |   1 +
 tests/tcg/x86_64/system/boot.S                     |   2 +-
 64 files changed, 982 insertions(+), 336 deletions(-)
 create mode 100644 hw/semihosting/common-semi.h
 rename target/arm/arm-semi.c => hw/semihosting/arm-compat-semi.c (66%)
 rename linux-user/{arm => }/semihost.c (89%)
 create mode 100644 stubs/yank.c
 create mode 100644 tests/tcg/multiarch/gdbstub/memory.py
 create mode 100644 tests/tcg/multiarch/gdbstub/test-qxfer-auxv-read.py

Comments

Peter Maydell Jan. 15, 2021, 3:31 p.m. UTC | #1
On Fri, 15 Jan 2021 at 13:08, Alex Bennée <alex.bennee@linaro.org> wrote:
>
> The following changes since commit 7c79721606be11b5bc556449e5bcbc331ef6867d:
>
>   Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210113' into staging (2021-01-14 09:54:29 +0000)
>
> are available in the Git repository at:
>
>   https://github.com/stsquad/qemu.git tags/pull-testing-and-misc-150121-1
>
> for you to fetch changes up to be846761ca8b5a7e2e7b7108c8c156126b799824:
>
>   semihosting: Implement SYS_ISERROR (2021-01-15 11:12:34 +0000)
>
> ----------------------------------------------------------------
> Testing, gdbstub and semihosting patches:
>
>   - clean-ups to docker images
>   - drop duplicate jobs from shippable
>   - prettier tag generation (+gtags)
>   - generate browsable source tree
>   - more Travis->GitLab migrations
>   - fix checkpatch to deal with commits
>   - gate gdbstub tests on 8.3.1, expand tests
>   - support Xfer:auxv:read gdb packet
>   - better gdbstub cleanup
>   - use GDB's SVE register layout
>   - make arm-compat-semihosting common
>   - add riscv semihosting support
>   - add HEAPINFO, ELAPSED, TICKFREQ, TMPNAM and ISERROR to semihosting

Fails to build, netbsd:

../src/gdbstub.c: In function 'handle_query_xfer_auxv':
../src/gdbstub.c:2258:26: error: 'struct image_info' has no member
named 'saved_auxv'
     saved_auxv = ts->info->saved_auxv;
                          ^~
../src/gdbstub.c:2259:24: error: 'struct image_info' has no member
named 'auxv_len'
     auxv_len = ts->info->auxv_len;
                        ^~

thanks
-- PMM
Alex Bennée Jan. 18, 2021, 12:18 p.m. UTC | #2
Peter Maydell <peter.maydell@linaro.org> writes:

> On Fri, 15 Jan 2021 at 13:08, Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>> The following changes since commit 7c79721606be11b5bc556449e5bcbc331ef6867d:
>>
>>   Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210113' into staging (2021-01-14 09:54:29 +0000)
>>
>> are available in the Git repository at:
>>
>>   https://github.com/stsquad/qemu.git tags/pull-testing-and-misc-150121-1
>>
>> for you to fetch changes up to be846761ca8b5a7e2e7b7108c8c156126b799824:
>>
>>   semihosting: Implement SYS_ISERROR (2021-01-15 11:12:34 +0000)
>>
>> ----------------------------------------------------------------
>> Testing, gdbstub and semihosting patches:
>>
>>   - clean-ups to docker images
>>   - drop duplicate jobs from shippable
>>   - prettier tag generation (+gtags)
>>   - generate browsable source tree
>>   - more Travis->GitLab migrations
>>   - fix checkpatch to deal with commits
>>   - gate gdbstub tests on 8.3.1, expand tests
>>   - support Xfer:auxv:read gdb packet
>>   - better gdbstub cleanup
>>   - use GDB's SVE register layout
>>   - make arm-compat-semihosting common
>>   - add riscv semihosting support
>>   - add HEAPINFO, ELAPSED, TICKFREQ, TMPNAM and ISERROR to semihosting
>
> Fails to build, netbsd:
>
> ../src/gdbstub.c: In function 'handle_query_xfer_auxv':
> ../src/gdbstub.c:2258:26: error: 'struct image_info' has no member
> named 'saved_auxv'
>      saved_auxv = ts->info->saved_auxv;
>                           ^~
> ../src/gdbstub.c:2259:24: error: 'struct image_info' has no member
> named 'auxv_len'
>      auxv_len = ts->info->auxv_len;

I've:

#if defined(CONFIG_USER_ONLY) && defined(CONFIG_LINUX_USER)

around the code so it won't build for the *BSDs.

Sent v2

>                         ^~
>
> thanks
> -- PMM
Philippe Mathieu-Daudé Jan. 18, 2021, 1:33 p.m. UTC | #3
Hi Alex,

On 1/18/21 1:18 PM, Alex Bennée wrote:
> 
> Peter Maydell <peter.maydell@linaro.org> writes:
> 
>> On Fri, 15 Jan 2021 at 13:08, Alex Bennée <alex.bennee@linaro.org> wrote:
>>>
>>> The following changes since commit 7c79721606be11b5bc556449e5bcbc331ef6867d:
>>>
>>>   Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210113' into staging (2021-01-14 09:54:29 +0000)
>>>
>>> are available in the Git repository at:
>>>
>>>   https://github.com/stsquad/qemu.git tags/pull-testing-and-misc-150121-1
>>>
>>> for you to fetch changes up to be846761ca8b5a7e2e7b7108c8c156126b799824:
>>>
>>>   semihosting: Implement SYS_ISERROR (2021-01-15 11:12:34 +0000)
>>>
>>> ----------------------------------------------------------------
>>> Testing, gdbstub and semihosting patches:
>>>
>>>   - clean-ups to docker images
>>>   - drop duplicate jobs from shippable
>>>   - prettier tag generation (+gtags)
>>>   - generate browsable source tree
>>>   - more Travis->GitLab migrations
>>>   - fix checkpatch to deal with commits
>>>   - gate gdbstub tests on 8.3.1, expand tests
>>>   - support Xfer:auxv:read gdb packet
>>>   - better gdbstub cleanup
>>>   - use GDB's SVE register layout
>>>   - make arm-compat-semihosting common
>>>   - add riscv semihosting support
>>>   - add HEAPINFO, ELAPSED, TICKFREQ, TMPNAM and ISERROR to semihosting
>>
>> Fails to build, netbsd:
>>
>> ../src/gdbstub.c: In function 'handle_query_xfer_auxv':
>> ../src/gdbstub.c:2258:26: error: 'struct image_info' has no member
>> named 'saved_auxv'
>>      saved_auxv = ts->info->saved_auxv;
>>                           ^~
>> ../src/gdbstub.c:2259:24: error: 'struct image_info' has no member
>> named 'auxv_len'
>>      auxv_len = ts->info->auxv_len;
> 
> I've:
> 
> #if defined(CONFIG_USER_ONLY) && defined(CONFIG_LINUX_USER)
> 
> around the code so it won't build for the *BSDs.

CONFIG_LINUX_USER implies CONFIG_USER_ONLY, right?

Maybe long-term this can become:

#if defined(CONFIG_LINUX_USER)
#elif defined(...BSD...)
#endif

(maybe worth to fix if the pullreq isn't processed,
else not a big deal).
Alex Bennée Jan. 18, 2021, 3:38 p.m. UTC | #4
Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> Hi Alex,
>
> On 1/18/21 1:18 PM, Alex Bennée wrote:
>> 
>> Peter Maydell <peter.maydell@linaro.org> writes:
>> 
>>> On Fri, 15 Jan 2021 at 13:08, Alex Bennée <alex.bennee@linaro.org> wrote:
>>>>
>>>> The following changes since commit 7c79721606be11b5bc556449e5bcbc331ef6867d:
>>>>
>>>>   Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210113' into staging (2021-01-14 09:54:29 +0000)
>>>>
>>>> are available in the Git repository at:
>>>>
>>>>   https://github.com/stsquad/qemu.git tags/pull-testing-and-misc-150121-1
>>>>
>>>> for you to fetch changes up to be846761ca8b5a7e2e7b7108c8c156126b799824:
>>>>
>>>>   semihosting: Implement SYS_ISERROR (2021-01-15 11:12:34 +0000)
>>>>
>>>> ----------------------------------------------------------------
>>>> Testing, gdbstub and semihosting patches:
>>>>
>>>>   - clean-ups to docker images
>>>>   - drop duplicate jobs from shippable
>>>>   - prettier tag generation (+gtags)
>>>>   - generate browsable source tree
>>>>   - more Travis->GitLab migrations
>>>>   - fix checkpatch to deal with commits
>>>>   - gate gdbstub tests on 8.3.1, expand tests
>>>>   - support Xfer:auxv:read gdb packet
>>>>   - better gdbstub cleanup
>>>>   - use GDB's SVE register layout
>>>>   - make arm-compat-semihosting common
>>>>   - add riscv semihosting support
>>>>   - add HEAPINFO, ELAPSED, TICKFREQ, TMPNAM and ISERROR to semihosting
>>>
>>> Fails to build, netbsd:
>>>
>>> ../src/gdbstub.c: In function 'handle_query_xfer_auxv':
>>> ../src/gdbstub.c:2258:26: error: 'struct image_info' has no member
>>> named 'saved_auxv'
>>>      saved_auxv = ts->info->saved_auxv;
>>>                           ^~
>>> ../src/gdbstub.c:2259:24: error: 'struct image_info' has no member
>>> named 'auxv_len'
>>>      auxv_len = ts->info->auxv_len;
>> 
>> I've:
>> 
>> #if defined(CONFIG_USER_ONLY) && defined(CONFIG_LINUX_USER)
>> 
>> around the code so it won't build for the *BSDs.
>
> CONFIG_LINUX_USER implies CONFIG_USER_ONLY, right?

Probably could in a clean-up patch.

>
> Maybe long-term this can become:
>
> #if defined(CONFIG_LINUX_USER)
> #elif defined(...BSD...)
> #endif

Well the failure is missing the data in our own structures. I don't know
if BSD does support auxv, I guess if it's a POSIX thing. I guess we'll
see when we get the BSD rewrite.

> (maybe worth to fix if the pullreq isn't processed,
> else not a big deal).

Already merged so ¯\_(ツ)_/¯...