summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorIlya Leoshkevich2021-05-19 06:57:38 +0200
committerCornelia Huck2021-05-20 14:19:30 +0200
commitf66487756b0553b156d8e3e81bc6411cfc38176e (patch)
tree47ad757bef5103cd0d2363630483bb83ceb71a86 /tests
parenttarget/i386: Make sure that vsyscall's tb->size != 0 (diff)
downloadqemu-f66487756b0553b156d8e3e81bc6411cfc38176e.tar.gz
qemu-f66487756b0553b156d8e3e81bc6411cfc38176e.tar.xz
qemu-f66487756b0553b156d8e3e81bc6411cfc38176e.zip
tests/tcg/x86_64: add vsyscall smoke test
Having a small test will prevent trivial regressions in the future. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Message-Id: <20210519045738.1335210-3-iii@linux.ibm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/tcg/x86_64/Makefile.target6
-rw-r--r--tests/tcg/x86_64/vsyscall.c12
2 files changed, 17 insertions, 1 deletions
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..786b047053
--- /dev/null
+++ b/tests/tcg/x86_64/vsyscall.c
@@ -0,0 +1,12 @@
+#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));
+ return 0;
+}