diff options
| author | Zhang Boyang <zhangboyang.id@gmail.com> | 2017-09-10 17:02:48 +0800 |
|---|---|---|
| committer | Zhang Boyang <zhangboyang.id@gmail.com> | 2017-09-10 17:03:34 +0800 |
| commit | f406f63a386a04d81626cb4752521de8bffee6b9 (patch) | |
| tree | df46b01cbd3d86aec6db68a02427b01fa19d32b5 /tests/tests2 | |
| parent | 978d1ecce0fdd26b42f8ea8f9f157c91168ff03d (diff) | |
| download | tinycc-f406f63a386a04d81626cb4752521de8bffee6b9.tar.gz tinycc-f406f63a386a04d81626cb4752521de8bffee6b9.tar.bz2 | |
Add test case for AL/AX extending problem
Diffstat (limited to 'tests/tests2')
| -rw-r--r-- | tests/tests2/98_al_ax_extend.c | 41 | ||||
| -rw-r--r-- | tests/tests2/98_al_ax_extend.expect | 9 | ||||
| -rw-r--r-- | tests/tests2/Makefile | 3 |
3 files changed, 53 insertions, 0 deletions
diff --git a/tests/tests2/98_al_ax_extend.c b/tests/tests2/98_al_ax_extend.c new file mode 100644 index 0000000..bcbaa6c --- /dev/null +++ b/tests/tests2/98_al_ax_extend.c @@ -0,0 +1,41 @@ +#include <stdio.h>
+#include <stdlib.h>
+asm (
+ ".text;"
+ ".globl _us;.globl _ss;.globl _uc;.globl _sc;"
+ "_us:;_ss:;_uc:;_sc:;"
+ "movl $0x1234ABCD, %eax;"
+ "ret;"
+);
+
+#if 1
+#define us _us
+#define ss _ss
+#define uc _uc
+#define sc _sc
+#endif
+
+int main()
+{
+ unsigned short us(void);
+ short ss(void);
+ unsigned char uc(void);
+ signed char sc(void);
+
+ unsigned short (*fpus)(void) = us;
+ short (*fpss)(void) = ss;
+ unsigned char (*fpuc)(void) = uc;
+ signed char (*fpsc)(void) = sc;
+
+ printf("%08X %08X\n", us() + 1, fpus() + 1);
+ printf("%08X %08X\n", ss() + 1, fpss() + 1);
+ printf("%08X %08X\n", uc() + 1, fpuc() + 1);
+ printf("%08X %08X\n", sc() + 1, fpsc() + 1);
+ printf("\n");
+ printf("%08X %08X\n", fpus() + 1, us() + 1);
+ printf("%08X %08X\n", fpss() + 1, ss() + 1);
+ printf("%08X %08X\n", fpuc() + 1, uc() + 1);
+ printf("%08X %08X\n", fpsc() + 1, sc() + 1);
+
+ return 0;
+}
diff --git a/tests/tests2/98_al_ax_extend.expect b/tests/tests2/98_al_ax_extend.expect new file mode 100644 index 0000000..c5752e8 --- /dev/null +++ b/tests/tests2/98_al_ax_extend.expect @@ -0,0 +1,9 @@ +0000ABCE 0000ABCE +FFFFABCE FFFFABCE +000000CE 000000CE +FFFFFFCE FFFFFFCE + +0000ABCE 0000ABCE +FFFFABCE FFFFABCE +000000CE 000000CE +FFFFFFCE FFFFFFCE diff --git a/tests/tests2/Makefile b/tests/tests2/Makefile index c75db8c..edd872f 100644 --- a/tests/tests2/Makefile +++ b/tests/tests2/Makefile @@ -17,6 +17,9 @@ endif ifeq ($(ARCH),x86_64) SKIP += 73_arm64.test endif +ifeq (,$(filter i386,$(ARCH))) + SKIP += 98_al_ax_extend.test +endif ifeq (,$(filter i386 x86_64,$(ARCH))) SKIP += 85_asm-outside-function.test endif |
