On 07/07/2023 17.42, Ilya Leoshkevich wrote:
> clang does not support expressions involving symbols in instructions
> like lghi yet, so building hello-s390x-asm.S with it fails.
>
> Move the expression to the literal pool and load it from there.
>
> Reported-by: Thomas Huth <thuth@redhat.com>
> Fixes: be4a4cb42961 ("tests/tcg/s390x: Test single-stepping SVC")
> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> ---
> tests/tcg/s390x/gdbstub/test-svc.py | 2 +-
> tests/tcg/s390x/hello-s390x-asm.S | 4 +++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tests/tcg/s390x/gdbstub/test-svc.py b/tests/tcg/s390x/gdbstub/test-svc.py
> index 7851ca72846..18fad3f163d 100644
> --- a/tests/tcg/s390x/gdbstub/test-svc.py
> +++ b/tests/tcg/s390x/gdbstub/test-svc.py
> @@ -25,7 +25,7 @@ def run_test():
> gdb.execute("si")
> report("larl\t" in gdb.execute("x/i $pc", False, True), "insn #2")
> gdb.execute("si")
> - report("lghi\t" in gdb.execute("x/i $pc", False, True), "insn #3")
> + report("lgrl\t" in gdb.execute("x/i $pc", False, True), "insn #3")
> gdb.execute("si")
> report("svc\t" in gdb.execute("x/i $pc", False, True), "insn #4")
> gdb.execute("si")
> diff --git a/tests/tcg/s390x/hello-s390x-asm.S b/tests/tcg/s390x/hello-s390x-asm.S
> index 2e9faa16047..4dbda12d35d 100644
> --- a/tests/tcg/s390x/hello-s390x-asm.S
> +++ b/tests/tcg/s390x/hello-s390x-asm.S
> @@ -8,7 +8,7 @@ _start:
> /* puts("Hello, World!"); */
> lghi %r2,1
> larl %r3,foo
> -lghi %r4,foo_end-foo
> +lgrl %r4,foo_len
> svc 4
>
> /* exit(0); */
> @@ -18,3 +18,5 @@ svc 1
> .align 2
> foo: .asciz "Hello, World!\n"
> foo_end:
> +.align 8
> +foo_len: .quad foo_end-foo
Thanks, that seems to work! Queued now.
Tested-by: Thomas Huth <thuth@redhat.com>