diff mbox series

[2/2] tests/tcg/x86_64: add vsyscall smoke test

Message ID 20210512040250.203953-3-iii@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series target/i386: Make sure that vsyscall's tb->size != 0 | expand

Commit Message

Ilya Leoshkevich May 12, 2021, 4:02 a.m. UTC
Having a small test will prevent trivial regressions in the future.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 tests/tcg/x86_64/Makefile.target |  6 +++++-
 tests/tcg/x86_64/vsyscall.c      | 11 +++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)
 create mode 100644 tests/tcg/x86_64/vsyscall.c

Comments

Richard Henderson May 14, 2021, 2:30 p.m. UTC | #1
On 5/11/21 11:02 PM, Ilya Leoshkevich wrote:
> Having a small test will prevent trivial regressions in the future.
> 
> Signed-off-by: Ilya Leoshkevich<iii@linux.ibm.com>
> ---
>   tests/tcg/x86_64/Makefile.target |  6 +++++-
>   tests/tcg/x86_64/vsyscall.c      | 11 +++++++++++
>   2 files changed, 16 insertions(+), 1 deletion(-)
>   create mode 100644 tests/tcg/x86_64/vsyscall.c

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~
Cornelia Huck May 17, 2021, 12:52 p.m. UTC | #2
On Wed, 12 May 2021 06:02:50 +0200
Ilya Leoshkevich <iii@linux.ibm.com> wrote:

> Having a small test will prevent trivial regressions in the future.
> 
> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> ---
>  tests/tcg/x86_64/Makefile.target |  6 +++++-
>  tests/tcg/x86_64/vsyscall.c      | 11 +++++++++++
>  2 files changed, 16 insertions(+), 1 deletion(-)
>  create mode 100644 tests/tcg/x86_64/vsyscall.c

> diff --git a/tests/tcg/x86_64/vsyscall.c b/tests/tcg/x86_64/vsyscall.c
> new file mode 100644
> index 0000000000..b9b7f87459
> --- /dev/null
> +++ b/tests/tcg/x86_64/vsyscall.c
> @@ -0,0 +1,11 @@
> +#include <stdio.h>
> +#include <time.h>
> +
> +#define VSYSCALL_PAGE 0xffffffffff600000
> +#define TIME_OFFSET 0x400
> +typedef time_t (*time_func)(time_t *);
> +
> +int main(void)
> +{
> +    printf("%ld\n", ((time_func)(VSYSCALL_PAGE + TIME_OFFSET))(NULL));
> +}

Fails in https://gitlab.com/cohuck/qemu/-/jobs/1267727559 ("error:
control reaches end of non-void function").
Ilya Leoshkevich May 17, 2021, 2:30 p.m. UTC | #3
On Mon, 2021-05-17 at 14:52 +0200, Cornelia Huck wrote:
> On Wed, 12 May 2021 06:02:50 +0200
> Ilya Leoshkevich <iii@linux.ibm.com> wrote:
> 
> > Having a small test will prevent trivial regressions in the future.
> > 
> > Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> > ---
> >  tests/tcg/x86_64/Makefile.target |  6 +++++-
> >  tests/tcg/x86_64/vsyscall.c      | 11 +++++++++++
> >  2 files changed, 16 insertions(+), 1 deletion(-)
> >  create mode 100644 tests/tcg/x86_64/vsyscall.c
> 
> > diff --git a/tests/tcg/x86_64/vsyscall.c
> > b/tests/tcg/x86_64/vsyscall.c
> > new file mode 100644
> > index 0000000000..b9b7f87459
> > --- /dev/null
> > +++ b/tests/tcg/x86_64/vsyscall.c
> > @@ -0,0 +1,11 @@
> > +#include <stdio.h>
> > +#include <time.h>
> > +
> > +#define VSYSCALL_PAGE 0xffffffffff600000
> > +#define TIME_OFFSET 0x400
> > +typedef time_t (*time_func)(time_t *);
> > +
> > +int main(void)
> > +{
> > +    printf("%ld\n", ((time_func)(VSYSCALL_PAGE +
> > TIME_OFFSET))(NULL));
> > +}
> 
> Fails in https://gitlab.com/cohuck/qemu/-/jobs/1267727559 ("error:
> control reaches end of non-void function").

I always thought that omitting return in main() is allowed, but
turns out this is a C99-only thing. I should have probably used `make
docker-all-tests` instead of just `make check` to catch this.

I will send a v2.
diff mbox series

Patch

diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target
index 20bf96202a..2151ea6302 100644
--- a/tests/tcg/x86_64/Makefile.target
+++ b/tests/tcg/x86_64/Makefile.target
@@ -3,14 +3,18 @@ 
 # 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/
+# $(SRC_PATH)/tests/tcg/i386/
 #
 
 include $(SRC_PATH)/tests/tcg/i386/Makefile.target
 
+X86_64_TESTS += vsyscall
 TESTS=$(MULTIARCH_TESTS) $(X86_64_TESTS) test-x86_64
 QEMU_OPTS += -cpu max
 
 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)
+
+vsyscall: $(SRC_PATH)/tests/tcg/x86_64/vsyscall.c
+	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
diff --git a/tests/tcg/x86_64/vsyscall.c b/tests/tcg/x86_64/vsyscall.c
new file mode 100644
index 0000000000..b9b7f87459
--- /dev/null
+++ b/tests/tcg/x86_64/vsyscall.c
@@ -0,0 +1,11 @@ 
+#include <stdio.h>
+#include <time.h>
+
+#define VSYSCALL_PAGE 0xffffffffff600000
+#define TIME_OFFSET 0x400
+typedef time_t (*time_func)(time_t *);
+
+int main(void)
+{
+    printf("%ld\n", ((time_func)(VSYSCALL_PAGE + TIME_OFFSET))(NULL));
+}