From 94923e138201ce211bda000118e882227be21e22 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin (Intel)" Date: Wed, 15 Oct 2025 22:51:34 -0700 Subject: [PATCH] travis: improve the RET instruction test Split the RET instruction test by mode for ease of disassembly, and test more subcases. Signed-off-by: H. Peter Anvin (Intel) --- test/ret.asm | 6 +++ travis/test/ret-16.bin.t | 1 + travis/test/ret-16.stderr | 12 +++--- travis/test/ret-32.bin.t | 1 + travis/test/ret-32.stderr | 10 ++--- travis/test/ret-64.bin.t | 1 + travis/test/ret-64.stderr | 4 +- travis/test/ret.asm | 41 +++++++++++++++--- travis/test/ret.bin.t | 1 - travis/test/ret.json | 90 +++++++++++++++++++++++---------------- 10 files changed, 111 insertions(+), 56 deletions(-) create mode 100644 travis/test/ret-16.bin.t create mode 100644 travis/test/ret-32.bin.t create mode 100644 travis/test/ret-64.bin.t delete mode 100644 travis/test/ret.bin.t diff --git a/test/ret.asm b/test/ret.asm index 551c3fb1..e9b696a1 100644 --- a/test/ret.asm +++ b/test/ret.asm @@ -36,6 +36,12 @@ retd retnd retfd + o16 ret + o16 retn + o16 retf + o32 ret + o32 retn + o32 retf %ifdef ERROR retq retnq diff --git a/travis/test/ret-16.bin.t b/travis/test/ret-16.bin.t new file mode 100644 index 00000000..d85e6805 --- /dev/null +++ b/travis/test/ret-16.bin.t @@ -0,0 +1 @@ +ÃÃËÃÃËfÃfÃfËÃÃËfÃfÃfË \ No newline at end of file diff --git a/travis/test/ret-16.stderr b/travis/test/ret-16.stderr index 05d97846..70eb0973 100644 --- a/travis/test/ret-16.stderr +++ b/travis/test/ret-16.stderr @@ -1,6 +1,6 @@ -./travis/test/ret.asm:16: error: instruction not supported in 16-bit mode -./travis/test/ret.asm:17: error: instruction not supported in 16-bit mode -./travis/test/ret.asm:18: error: instruction not supported in 16-bit mode -./travis/test/ret.asm:56: error: instruction not supported in 16-bit mode -./travis/test/ret.asm:57: error: instruction not supported in 16-bit mode -./travis/test/ret.asm:58: error: instruction not supported in 16-bit mode +./travis/test/ret.asm:26: error: instruction not supported in 16-bit mode +./travis/test/ret.asm:27: error: instruction not supported in 16-bit mode +./travis/test/ret.asm:28: error: instruction not supported in 16-bit mode +./travis/test/ret.asm:29: error: invalid operands in 16-bit mode +./travis/test/ret.asm:30: error: invalid operands in 16-bit mode +./travis/test/ret.asm:31: error: invalid operands in 16-bit mode diff --git a/travis/test/ret-32.bin.t b/travis/test/ret-32.bin.t new file mode 100644 index 00000000..b947f104 --- /dev/null +++ b/travis/test/ret-32.bin.t @@ -0,0 +1 @@ +ÃÃËfÃfÃfËÃÃËfÃfÃfËÃÃË \ No newline at end of file diff --git a/travis/test/ret-32.stderr b/travis/test/ret-32.stderr index 0c1ccbbd..d1ff74b0 100644 --- a/travis/test/ret-32.stderr +++ b/travis/test/ret-32.stderr @@ -1,6 +1,6 @@ -./travis/test/ret.asm:35: error: instruction not supported in 32-bit mode -./travis/test/ret.asm:36: error: instruction not supported in 32-bit mode -./travis/test/ret.asm:37: error: instruction not supported in 32-bit mode +./travis/test/ret.asm:54: error: instruction not supported in 32-bit mode +./travis/test/ret.asm:55: error: instruction not supported in 32-bit mode ./travis/test/ret.asm:56: error: instruction not supported in 32-bit mode -./travis/test/ret.asm:57: error: instruction not supported in 32-bit mode -./travis/test/ret.asm:58: error: instruction not supported in 32-bit mode +./travis/test/ret.asm:57: error: invalid operands in 32-bit mode +./travis/test/ret.asm:58: error: invalid operands in 32-bit mode +./travis/test/ret.asm:59: error: invalid operands in 32-bit mode diff --git a/travis/test/ret-64.bin.t b/travis/test/ret-64.bin.t new file mode 100644 index 00000000..3319c658 --- /dev/null +++ b/travis/test/ret-64.bin.t @@ -0,0 +1 @@ +ÃÃËfÃfÃfËfÃfÃfËËËÃÃHËÃÃHË \ No newline at end of file diff --git a/travis/test/ret-64.stderr b/travis/test/ret-64.stderr index 049f707b..98d89777 100644 --- a/travis/test/ret-64.stderr +++ b/travis/test/ret-64.stderr @@ -1,2 +1,2 @@ -./travis/test/ret.asm:51: error: instruction not supported in 64-bit mode -./travis/test/ret.asm:52: error: instruction not supported in 64-bit mode +./travis/test/ret.asm:76: error: instruction not supported in 64-bit mode +./travis/test/ret.asm:77: error: instruction not supported in 64-bit mode diff --git a/travis/test/ret.asm b/travis/test/ret.asm index 0a74550f..023d8233 100644 --- a/travis/test/ret.asm +++ b/travis/test/ret.asm @@ -1,6 +1,10 @@ -;; All the flavors of RET + ;; All the flavors of RET -%ifdef TEST_BITS_16 +%ifndef TEST_BITS + %define TEST_BITS (16|32|64) +%endif + +%if (TEST_BITS) & 16 bits 16 ret @@ -12,14 +16,23 @@ retd retnd retfd + o16 ret + o16 retn + o16 retf + o32 ret + o32 retn + o32 retf %ifdef ERROR retq retnq retfq + o64 ret + o64 retn + o64 retf %endif %endif -%ifdef TEST_BITS_32 +%if (TEST_BITS) & 32 bits 32 ret @@ -31,14 +44,23 @@ retd retnd retfd + o16 ret + o16 retn + o16 retf + o32 ret + o32 retn + o32 retf %ifdef ERROR retq retnq retfq + o64 ret + o64 retn + o64 retf %endif %endif -%ifdef TEST_BITS_64 +%if (TEST_BITS) & 64 bits 64 ret @@ -47,12 +69,21 @@ retw retnw retfw + o16 ret + o16 retn + o16 retf %ifdef ERROR retd retnd -%endif + o32 ret + o32 retn %endif retfd + o32 retf retq retnq retfq + o64 ret + o64 retn + o64 retf +%endif diff --git a/travis/test/ret.bin.t b/travis/test/ret.bin.t deleted file mode 100644 index 246929c8..00000000 --- a/travis/test/ret.bin.t +++ /dev/null @@ -1 +0,0 @@ -ÃÃËÃÃËfÃfÃfËÃÃËfÃfÃfËÃÃËÃÃËfÃfÃfËËÃÃHË \ No newline at end of file diff --git a/travis/test/ret.json b/travis/test/ret.json index 96ff79d8..ece48949 100644 --- a/travis/test/ret.json +++ b/travis/test/ret.json @@ -1,39 +1,55 @@ [ - { - "description": "Test all the flavors of RET", - "id": "ret", - "format": "bin", - "source": "ret.asm", - "option": "-Ox -DTEST_BITS_16 -DTEST_BITS_32 -DTEST_BITS_64", - "target": [ - { "output": "ret.bin" } - ] - }, - { - "description": "Test all the flavors of RET (err 16 bit)", - "ref": "ret", - "option": "-DERROR -DTEST_BITS_16", - "target": [ - { "stderr": "ret-16.stderr" } - ], - "error": "expected" - }, - { - "description": "Test all the flavors of RET (err 32 bit)", - "ref": "ret", - "option": "-DERROR -DTEST_BITS_32", - "target": [ - { "stderr": "ret-32.stderr" } - ], - "error": "expected" - }, - { - "description": "Test all the flavors of RET (err 64 bit)", - "ref": "ret", - "option": "-DERROR -DTEST_BITS_64", - "target": [ - { "stderr": "ret-64.stderr" } - ], - "error": "expected" - } + { + "description": "Test all the flavors of RET (16 bit)", + "id": "ret", + "format": "bin", + "source": "ret.asm", + "option": "-Ox -DTEST_BITS=16", + "target": [ + { "output": "ret-16.bin" } + ] + }, + { + "description": "Test all the flavors of RET (32 bit)", + "ref": "ret", + "option": "-Ox -DTEST_BITS=32", + "target": [ + { "output": "ret-32.bin" } + ] + }, + { + "description": "Test all the flavors of RET (64 bit)", + "ref": "ret", + "option": "-Ox -DTEST_BITS=64", + "target": [ + { "output": "ret-64.bin" } + ] + }, + { + "description": "Test all the flavors of RET (err 16 bit)", + "ref": "ret", + "option": "-Ox -DERROR -DTEST_BITS=16", + "target": [ + { "stderr": "ret-16.stderr" } + ], + "error": "expected" + }, + { + "description": "Test all the flavors of RET (err 32 bit)", + "ref": "ret", + "option": "-Ox -DERROR -DTEST_BITS=32", + "target": [ + { "stderr": "ret-32.stderr" } + ], + "error": "expected" + }, + { + "description": "Test all the flavors of RET (err 64 bit)", + "ref": "ret", + "option": "-Ox -DERROR -DTEST_BITS=64", + "target": [ + { "stderr": "ret-64.stderr" } + ], + "error": "expected" + } ]