diff mbox series

[v3,23/46] tests/tcg/x86_64: add Makefile.target

Message ID 20180424152405.10304-24-alex.bennee@linaro.org
State New
Headers show
Series fix building of tests/tcg | expand

Commit Message

Alex Bennée April 24, 2018, 3:23 p.m. UTC
The sources for x86_64 are shared in the i386 directory which will be
included thanks to TARGET_BASE_ARCH. However not all sources build so
we need to filter out the ones we can't build in the 64 bit world.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

---
 tests/tcg/i386/Makefile.target   |  2 +-
 tests/tcg/x86_64/Makefile.target | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)
 create mode 100644 tests/tcg/x86_64/Makefile.target

-- 
2.17.0

Comments

Philippe Mathieu-Daudé April 25, 2018, 4:03 a.m. UTC | #1
On 04/24/2018 12:23 PM, Alex Bennée wrote:
> The sources for x86_64 are shared in the i386 directory which will be

> included thanks to TARGET_BASE_ARCH. However not all sources build so

> we need to filter out the ones we can't build in the 64 bit world.

> 

> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

> ---

>  tests/tcg/i386/Makefile.target   |  2 +-

>  tests/tcg/x86_64/Makefile.target | 15 +++++++++++++++

>  2 files changed, 16 insertions(+), 1 deletion(-)

>  create mode 100644 tests/tcg/x86_64/Makefile.target

> 

> diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target

> index 80ccad3d7b..27086c3f2b 100644

> --- a/tests/tcg/i386/Makefile.target

> +++ b/tests/tcg/i386/Makefile.target

> @@ -7,7 +7,7 @@ VPATH 		+= $(I386_SRC)

>  

>  I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))

>  I386_TESTS=$(I386_SRCS:.c=)

> -

> +I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))

>  # Update TESTS

>  TESTS+=$(I386_ONLY_TESTS)

>  

> diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target

> new file mode 100644

> index 0000000000..74f170b9ed

> --- /dev/null

> +++ b/tests/tcg/x86_64/Makefile.target

> @@ -0,0 +1,15 @@

> +# -*- Mode: makefile -*-

> +#

> +# x86_64 tests - included from tests/tcg/Makefile.target

> +#

> +# Currently we only build test-x86_64 and test-i386-ssse3 from

> +# $(SRC)/tests/tcg/i386/

> +#

> +

> +X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))

> +X86_64_TESTS+=test-x86_64


The linux-test is taking looooong... I canceled it after ~15min on a i7
2GHz. Maybe it also belongs to the "BROKEN TEST" series on x86_64?
Currently it is only skipped if $(TARGET_NAME) == i386.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>


> +TESTS:=$(X86_64_TESTS)

> +

> +test-x86_64: LDFLAGS+=-lm -lc

> +test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h

> +	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

> 


$ make run-tcg-tests-x86_64-linux-user
  RUN-TESTS for x86_64
  TEST    test-mmap (default) on x86_64
  TEST    test-mmap (8k pages) on x86_64
ASAN:DEADLYSIGNAL
=================================================================
==5717==ERROR: AddressSanitizer: SEGV on unknown address 0x7fcba47fc000
(pc 0x7fcba8a3bf4d bp 0x7ffd19d74700 sp 0x7ffd19d73e88 T0)
==5717==The signal is caused by a WRITE memory access.
    #0 0x7fcba8a3bf4c  (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
    #1 0x7fcbab33f891  (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x5c891)
    #2 0x55dd3ae4a7e0 in mmap_frag /source/qemu/linux-user/mmap.c:189
    #3 0x55dd3ae4bbce in target_mmap /source/qemu/linux-user/mmap.c:533
    #4 0x55dd3ae4b8cb in target_mmap /source/qemu/linux-user/mmap.c:501
    #5 0x55dd3ae3895c in do_syscall /source/qemu/linux-user/syscall.c:9448
    #6 0x55dd3adfaa57 in cpu_loop /source/qemu/linux-user/main.c:258
    #7 0x55dd3ae005f5 in main /source/qemu/linux-user/main.c:5147
    #8 0x7fcba8903a86 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x21a86)
    #9 0x55dd3ad34a89 in _start
(/source/qemu/build/full/x86_64-linux-user/qemu-x86_64+0x350a89)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)
==5717==ABORTING
make[2]: ***
[/home/phil/source/qemu/tests/tcg/multiarch/Makefile.target:27:
run-test-mmap] Error 1

Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Alex Bennée April 25, 2018, 8:43 a.m. UTC | #2
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:

> On 04/24/2018 12:23 PM, Alex Bennée wrote:

>> The sources for x86_64 are shared in the i386 directory which will be

>> included thanks to TARGET_BASE_ARCH. However not all sources build so

>> we need to filter out the ones we can't build in the 64 bit world.

>>

>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

>> ---

>>  tests/tcg/i386/Makefile.target   |  2 +-

>>  tests/tcg/x86_64/Makefile.target | 15 +++++++++++++++

>>  2 files changed, 16 insertions(+), 1 deletion(-)

>>  create mode 100644 tests/tcg/x86_64/Makefile.target

>>

>> diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target

>> index 80ccad3d7b..27086c3f2b 100644

>> --- a/tests/tcg/i386/Makefile.target

>> +++ b/tests/tcg/i386/Makefile.target

>> @@ -7,7 +7,7 @@ VPATH 		+= $(I386_SRC)

>>

>>  I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))

>>  I386_TESTS=$(I386_SRCS:.c=)

>> -

>> +I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))

>>  # Update TESTS

>>  TESTS+=$(I386_ONLY_TESTS)

>>

>> diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target

>> new file mode 100644

>> index 0000000000..74f170b9ed

>> --- /dev/null

>> +++ b/tests/tcg/x86_64/Makefile.target

>> @@ -0,0 +1,15 @@

>> +# -*- Mode: makefile -*-

>> +#

>> +# x86_64 tests - included from tests/tcg/Makefile.target

>> +#

>> +# Currently we only build test-x86_64 and test-i386-ssse3 from

>> +# $(SRC)/tests/tcg/i386/

>> +#

>> +

>> +X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))

>> +X86_64_TESTS+=test-x86_64

>

> The linux-test is taking looooong... I canceled it after ~15min on a i7

> 2GHz. Maybe it also belongs to the "BROKEN TEST" series on x86_64?

> Currently it is only skipped if $(TARGET_NAME) == i386.


Hmm it runs pretty quickly for me:

time ./qemu-x86_64 ./tests/linux-test
0.02user 0.03system 0:00.08elapsed 72%CPU (0avgtext+0avgdata 7384maxresident)k
0inputs+0outputs (0major+1207minor)pagefaults 0swaps

I wonder if the failure mode you are seeing is the same as the others
which basically hang, which is why I added them to the broken test patch.

>

> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>

>> +TESTS:=$(X86_64_TESTS)

>> +

>> +test-x86_64: LDFLAGS+=-lm -lc

>> +test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h

>> +	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

>>

>

> $ make run-tcg-tests-x86_64-linux-user

>   RUN-TESTS for x86_64

>   TEST    test-mmap (default) on x86_64

>   TEST    test-mmap (8k pages) on x86_64

> ASAN:DEADLYSIGNAL

> =================================================================

> ==5717==ERROR: AddressSanitizer: SEGV on unknown address 0x7fcba47fc000

> (pc 0x7fcba8a3bf4d bp 0x7ffd19d74700 sp 0x7ffd19d73e88 T0)

> ==5717==The signal is caused by a WRITE memory access.

>     #0 0x7fcba8a3bf4c  (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)

>     #1 0x7fcbab33f891  (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x5c891)

>     #2 0x55dd3ae4a7e0 in mmap_frag /source/qemu/linux-user/mmap.c:189

>     #3 0x55dd3ae4bbce in target_mmap /source/qemu/linux-user/mmap.c:533

>     #4 0x55dd3ae4b8cb in target_mmap /source/qemu/linux-user/mmap.c:501

>     #5 0x55dd3ae3895c in do_syscall /source/qemu/linux-user/syscall.c:9448

>     #6 0x55dd3adfaa57 in cpu_loop /source/qemu/linux-user/main.c:258

>     #7 0x55dd3ae005f5 in main /source/qemu/linux-user/main.c:5147

>     #8 0x7fcba8903a86 in __libc_start_main

> (/lib/x86_64-linux-gnu/libc.so.6+0x21a86)

>     #9 0x55dd3ad34a89 in _start

> (/source/qemu/build/full/x86_64-linux-user/qemu-x86_64+0x350a89)

> AddressSanitizer can not provide additional info.

> SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)

> ==5717==ABORTING

> make[2]: ***

> [/home/phil/source/qemu/tests/tcg/multiarch/Makefile.target:27:

> run-test-mmap] Error 1

>

> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>


This is only with ASAN enabled right?

--
Alex Bennée
Philippe Mathieu-Daudé April 25, 2018, 2:01 p.m. UTC | #3
On 04/25/2018 05:43 AM, Alex Bennée wrote:
> 

> Philippe Mathieu-Daudé <f4bug@amsat.org> writes:

> 

>> On 04/24/2018 12:23 PM, Alex Bennée wrote:

>>> The sources for x86_64 are shared in the i386 directory which will be

>>> included thanks to TARGET_BASE_ARCH. However not all sources build so

>>> we need to filter out the ones we can't build in the 64 bit world.

>>>

>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

>>> ---

>>>  tests/tcg/i386/Makefile.target   |  2 +-

>>>  tests/tcg/x86_64/Makefile.target | 15 +++++++++++++++

>>>  2 files changed, 16 insertions(+), 1 deletion(-)

>>>  create mode 100644 tests/tcg/x86_64/Makefile.target

>>>

>>> diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target

>>> index 80ccad3d7b..27086c3f2b 100644

>>> --- a/tests/tcg/i386/Makefile.target

>>> +++ b/tests/tcg/i386/Makefile.target

>>> @@ -7,7 +7,7 @@ VPATH 		+= $(I386_SRC)

>>>

>>>  I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))

>>>  I386_TESTS=$(I386_SRCS:.c=)

>>> -

>>> +I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))

>>>  # Update TESTS

>>>  TESTS+=$(I386_ONLY_TESTS)

>>>

>>> diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target

>>> new file mode 100644

>>> index 0000000000..74f170b9ed

>>> --- /dev/null

>>> +++ b/tests/tcg/x86_64/Makefile.target

>>> @@ -0,0 +1,15 @@

>>> +# -*- Mode: makefile -*-

>>> +#

>>> +# x86_64 tests - included from tests/tcg/Makefile.target

>>> +#

>>> +# Currently we only build test-x86_64 and test-i386-ssse3 from

>>> +# $(SRC)/tests/tcg/i386/

>>> +#

>>> +

>>> +X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))

>>> +X86_64_TESTS+=test-x86_64

>>

>> The linux-test is taking looooong... I canceled it after ~15min on a i7

>> 2GHz. Maybe it also belongs to the "BROKEN TEST" series on x86_64?

>> Currently it is only skipped if $(TARGET_NAME) == i386.

> 

> Hmm it runs pretty quickly for me:

> 

> time ./qemu-x86_64 ./tests/linux-test

> 0.02user 0.03system 0:00.08elapsed 72%CPU (0avgtext+0avgdata 7384maxresident)k

> 0inputs+0outputs (0major+1207minor)pagefaults 0swaps

> 

> I wonder if the failure mode you are seeing is the same as the others

> which basically hang, which is why I added them to the broken test patch.


The test_clone() hangs here:

    while (waitpid(pid1, &status1, 0) != pid1);

32107 wait4(32109, 0x7ffdd2814a50, 0, NULL) = -1 ECHILD (No child processes)
32107 wait4(32109,  <unfinished ...>
32109 nanosleep({tv_sec=0, tv_nsec=10000000},  <unfinished ...>
32107 <... wait4 resumed> 0x7ffdd2814a50, 0, NULL) = -1 ECHILD (No child
processes)
32107 wait4(32109, 0x7ffdd2814a50, 0, NULL) = -1 ECHILD (No child processes)

> 

>>

>> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>>

>>> +TESTS:=$(X86_64_TESTS)

>>> +

>>> +test-x86_64: LDFLAGS+=-lm -lc

>>> +test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h

>>> +	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

>>>

>>

>> $ make run-tcg-tests-x86_64-linux-user

>>   RUN-TESTS for x86_64

>>   TEST    test-mmap (default) on x86_64

>>   TEST    test-mmap (8k pages) on x86_64

>> ASAN:DEADLYSIGNAL

>> =================================================================

>> ==5717==ERROR: AddressSanitizer: SEGV on unknown address 0x7fcba47fc000

>> (pc 0x7fcba8a3bf4d bp 0x7ffd19d74700 sp 0x7ffd19d73e88 T0)

>> ==5717==The signal is caused by a WRITE memory access.

>>     #0 0x7fcba8a3bf4c  (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)

>>     #1 0x7fcbab33f891  (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x5c891)

>>     #2 0x55dd3ae4a7e0 in mmap_frag /source/qemu/linux-user/mmap.c:189

>>     #3 0x55dd3ae4bbce in target_mmap /source/qemu/linux-user/mmap.c:533

>>     #4 0x55dd3ae4b8cb in target_mmap /source/qemu/linux-user/mmap.c:501

>>     #5 0x55dd3ae3895c in do_syscall /source/qemu/linux-user/syscall.c:9448

>>     #6 0x55dd3adfaa57 in cpu_loop /source/qemu/linux-user/main.c:258

>>     #7 0x55dd3ae005f5 in main /source/qemu/linux-user/main.c:5147

>>     #8 0x7fcba8903a86 in __libc_start_main

>> (/lib/x86_64-linux-gnu/libc.so.6+0x21a86)

>>     #9 0x55dd3ad34a89 in _start

>> (/source/qemu/build/full/x86_64-linux-user/qemu-x86_64+0x350a89)

>> AddressSanitizer can not provide additional info.

>> SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x159f4c)

>> ==5717==ABORTING

>> make[2]: ***

>> [/home/phil/source/qemu/tests/tcg/multiarch/Makefile.target:27:

>> run-test-mmap] Error 1

>>

>> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> 

> This is only with ASAN enabled right?


Yes, but even without ASan test_clone() hangs.

Commenting test_clone():

$ make -j1 run-tcg-tests-x86_64-linux-user
  CROSS-BUILD x86_64 guest-tests with gcc-7
  CROSS-BUILD x86_64 guest-tests with gcc-7
  RUN-TESTS for x86_64
  TEST    test-mmap (default) on x86_64
  TEST    test-mmap (8k pages) on x86_64
  TEST    test-mmap (16k pages) on x86_64
  TEST    test-mmap (32k pages) on x86_64
  TEST    sha1 on x86_64
  TEST    linux-test on x86_64
  TEST    testthread on x86_64
  TEST    test-x86_64 on x86_64
$
diff mbox series

Patch

diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target
index 80ccad3d7b..27086c3f2b 100644
--- a/tests/tcg/i386/Makefile.target
+++ b/tests/tcg/i386/Makefile.target
@@ -7,7 +7,7 @@  VPATH 		+= $(I386_SRC)
 
 I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
 I386_TESTS=$(I386_SRCS:.c=)
-
+I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS))
 # Update TESTS
 TESTS+=$(I386_ONLY_TESTS)
 
diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target
new file mode 100644
index 0000000000..74f170b9ed
--- /dev/null
+++ b/tests/tcg/x86_64/Makefile.target
@@ -0,0 +1,15 @@ 
+# -*- Mode: makefile -*-
+#
+# x86_64 tests - included from tests/tcg/Makefile.target
+#
+# Currently we only build test-x86_64 and test-i386-ssse3 from
+# $(SRC)/tests/tcg/i386/
+#
+
+X86_64_TESTS=$(filter-out $(I386_ONLY_TESTS), $(TESTS))
+X86_64_TESTS+=test-x86_64
+TESTS:=$(X86_64_TESTS)
+
+test-x86_64: LDFLAGS+=-lm -lc
+test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h
+	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)