From 5fe308e1a33f0f28b1aa3ff5b9a0c29eeeaca3b1 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 2 Mar 2013 01:55:20 +0000 Subject: [PATCH] Add tests for invalid addresses and riz/eiz * gas/i386/inval.s: Add tests for invalid addresses and eiz. * gas/i386/x86-64-inval.s: Add tests for invalid addresses and riz/eiz. * gas/i386/inval.l: Updated. * gas/i386/x86-64-inval.l: Likewise. --- gas/testsuite/ChangeLog | 10 ++ gas/testsuite/gas/i386/inval.l | 186 ++++++++++---------- gas/testsuite/gas/i386/inval.s | 6 + gas/testsuite/gas/i386/x86-64-inval.l | 241 +++++++++++++++----------- gas/testsuite/gas/i386/x86-64-inval.s | 14 ++ 5 files changed, 263 insertions(+), 194 deletions(-) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 5107894513d..dd23d56e284 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2013-03-01 H.J. Lu + + * gas/i386/inval.s: Add tests for invalid addresses and eiz. + + * gas/i386/x86-64-inval.s: Add tests for invalid addresses and + riz/eiz. + + * gas/i386/inval.l: Updated. + * gas/i386/x86-64-inval.l: Likewise. + 2013-02-28 H.J. Lu * gas/i386/i386.exp: Run inval-rep and x86-64-inval-rep. diff --git a/gas/testsuite/gas/i386/inval.l b/gas/testsuite/gas/i386/inval.l index 3f74e9a9349..bec6b754fe6 100644 --- a/gas/testsuite/gas/i386/inval.l +++ b/gas/testsuite/gas/i386/inval.l @@ -1,5 +1,4 @@ .*: Assembler messages: -.*:3: Error: .* .*:4: Error: .* .*:5: Error: .* .*:6: Error: .* @@ -53,14 +52,13 @@ .*:54: Error: .* .*:55: Error: .* .*:56: Error: .* -.*:58: Error: .* +.*:57: Error: .* .*:59: Error: .* +.*:60: Error: .* .*:62: Error: .* .*:63: Error: .* .*:64: Error: .* .*:65: Error: .* -.*:66: Error: .* -.*:67: Error: .* .*:68: Error: .* .*:69: Error: .* .*:70: Error: .* @@ -71,98 +69,110 @@ .*:75: Error: .* .*:76: Error: .* .*:77: Error: .* +.*:78: Error: .* .*:79: Error: .* .*:80: Error: .* .*:81: Error: .* .*:82: Error: .* -.*:84: Error: .* +.*:83: Error: .* +.*:85: Error: .* +.*:86: Error: .* +.*:87: Error: .* +.*:88: Error: .* +.*:90: Error: .* GAS LISTING .* [ ]*1[ ]+\.text -[ ]*2[ ]+\# All the following should be illegal -[ ]*3[ ]+mov \(%dx\),%al -[ ]*4[ ]+mov \(%eax,%esp,2\),%al -[ ]*5[ ]+setae %eax -[ ]*6[ ]+pushb %ds -[ ]*7[ ]+popb %ds -[ ]*8[ ]+pushb %al -[ ]*9[ ]+popb %al -[ ]*10[ ]+pushb %ah -[ ]*11[ ]+popb %ah -[ ]*12[ ]+pushb %ax -[ ]*13[ ]+popb %ax -[ ]*14[ ]+pushb %eax -[ ]*15[ ]+popb %eax -[ ]*16[ ]+movb %ds,%ax -[ ]*17[ ]+movb %ds,%eax -[ ]*18[ ]+movb %ax,%ds -[ ]*19[ ]+movb %eax,%ds -[ ]*20[ ]+movdb %eax,%mm0 -[ ]*21[ ]+movqb 0,%mm0 -[ ]*22[ ]+ldsb 0,%eax -[ ]*23[ ]+setnew 0 -[ ]*24[ ]+movdw %eax,%mm0 -[ ]*25[ ]+movqw 0,%mm0 -[ ]*26[ ]+div %cx,%al -[ ]*27[ ]+div %cl,%ax -[ ]*28[ ]+div %ecx,%al -[ ]*29[ ]+imul 10,%bx,%ecx -[ ]*30[ ]+imul 10,%bx,%al -[ ]*31[ ]+popab -[ ]*32[ ]+stil -[ ]*33[ ]+aaab -[ ]*34[ ]+cwdel -[ ]*35[ ]+cwdw -[ ]*36[ ]+callww 0 -[ ]*37[ ]+foo: jaw foo -[ ]*38[ ]+jcxzw foo -[ ]*39[ ]+jecxzl foo -[ ]*40[ ]+loopb foo -[ ]*41[ ]+xlatw %es:%bx -[ ]*42[ ]+xlatl %es:%bx -[ ]*43[ ]+intl 2 -[ ]*44[ ]+int3b -[ ]*45[ ]+hltb -[ ]*46[ ]+fstb %st\(0\) -[ ]*47[ ]+fcompll 28\(%ebp\) -[ ]*48[ ]+fldlw \(%eax\) -[ ]*49[ ]+movl \$%ebx,%eax -[ ]*50[ ]+insertq \$4,\$2,%xmm2,%ebx -[ ]*51[ ]+cvtsi2ssq \(%eax\),%xmm1 -[ ]*52[ ]+cvtsi2sdq \(%eax\),%xmm1 -[ ]*53[ ]+fnstsw %eax -[ ]*54[ ]+fnstsw %al -[ ]*55[ ]+fstsw %eax -[ ]*56[ ]+fstsw %al -[ ]*57[ ]+ +[ ]*2[ ]+\.allow_index_reg +[ ]*3[ ]+\# All the following should be illegal +[ ]*4[ ]+mov \(%dx\),%al +[ ]*5[ ]+mov \(%eax,%esp,2\),%al +[ ]*6[ ]+setae %eax +[ ]*7[ ]+pushb %ds +[ ]*8[ ]+popb %ds +[ ]*9[ ]+pushb %al +[ ]*10[ ]+popb %al +[ ]*11[ ]+pushb %ah +[ ]*12[ ]+popb %ah +[ ]*13[ ]+pushb %ax +[ ]*14[ ]+popb %ax +[ ]*15[ ]+pushb %eax +[ ]*16[ ]+popb %eax +[ ]*17[ ]+movb %ds,%ax +[ ]*18[ ]+movb %ds,%eax +[ ]*19[ ]+movb %ax,%ds +[ ]*20[ ]+movb %eax,%ds +[ ]*21[ ]+movdb %eax,%mm0 +[ ]*22[ ]+movqb 0,%mm0 +[ ]*23[ ]+ldsb 0,%eax +[ ]*24[ ]+setnew 0 +[ ]*25[ ]+movdw %eax,%mm0 +[ ]*26[ ]+movqw 0,%mm0 +[ ]*27[ ]+div %cx,%al +[ ]*28[ ]+div %cl,%ax +[ ]*29[ ]+div %ecx,%al +[ ]*30[ ]+imul 10,%bx,%ecx +[ ]*31[ ]+imul 10,%bx,%al +[ ]*32[ ]+popab +[ ]*33[ ]+stil +[ ]*34[ ]+aaab +[ ]*35[ ]+cwdel +[ ]*36[ ]+cwdw +[ ]*37[ ]+callww 0 +[ ]*38[ ]+foo: jaw foo +[ ]*39[ ]+jcxzw foo +[ ]*40[ ]+jecxzl foo +[ ]*41[ ]+loopb foo +[ ]*42[ ]+xlatw %es:%bx +[ ]*43[ ]+xlatl %es:%bx +[ ]*44[ ]+intl 2 +[ ]*45[ ]+int3b +[ ]*46[ ]+hltb +[ ]*47[ ]+fstb %st\(0\) +[ ]*48[ ]+fcompll 28\(%ebp\) +[ ]*49[ ]+fldlw \(%eax\) +[ ]*50[ ]+movl \$%ebx,%eax +[ ]*51[ ]+insertq \$4,\$2,%xmm2,%ebx +[ ]*52[ ]+cvtsi2ssq \(%eax\),%xmm1 +[ ]*53[ ]+cvtsi2sdq \(%eax\),%xmm1 +[ ]*54[ ]+fnstsw %eax +[ ]*55[ ]+fnstsw %al +[ ]*56[ ]+fstsw %eax +[ ]*57[ ]+fstsw %al GAS LISTING .* -[ ]*58[ ]+movnti %ax, \(%eax\) -[ ]*59[ ]+movntiw %ax, \(%eax\) -[ ]*60[ ]+ -[ ]*61[ ]+\.intel_syntax noprefix -[ ]*62[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\] -[ ]*63[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\] -[ ]*64[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\] -[ ]*65[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\] -[ ]*66[ ]+movq xmm1, XMMWORD PTR \[esp\] -[ ]*67[ ]+movq xmm1, DWORD PTR \[esp\] -[ ]*68[ ]+movq xmm1, WORD PTR \[esp\] -[ ]*69[ ]+movq xmm1, BYTE PTR \[esp\] -[ ]*70[ ]+movq XMMWORD PTR \[esp\],xmm1 -[ ]*71[ ]+movq DWORD PTR \[esp\],xmm1 -[ ]*72[ ]+movq WORD PTR \[esp\],xmm1 -[ ]*73[ ]+movq BYTE PTR \[esp\],xmm1 -[ ]*74[ ]+fnstsw eax -[ ]*75[ ]+fnstsw al -[ ]*76[ ]+fstsw eax -[ ]*77[ ]+fstsw al -[ ]*78[ ]+ -[ ]*79[ ]+movsx ax, \[eax\] -[ ]*80[ ]+movsx eax, \[eax\] -[ ]*81[ ]+movzx ax, \[eax\] -[ ]*82[ ]+movzx eax, \[eax\] -[ ]*83[ ]+ -[ ]*84[ ]+movnti word ptr \[eax\], ax +[ ]*58[ ]+ +[ ]*59[ ]+movnti %ax, \(%eax\) +[ ]*60[ ]+movntiw %ax, \(%eax\) +[ ]*61[ ]+ +[ ]*62[ ]+add \(%si,%esi\), %eax +[ ]*63[ ]+add \(%esi,%si\), %eax +[ ]*64[ ]+add \(%eiz\), %eax +[ ]*65[ ]+add \(%eax\), %eiz +[ ]*66[ ]+ +[ ]*67[ ]+\.intel_syntax noprefix +[ ]*68[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\] +[ ]*69[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\] +[ ]*70[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\] +[ ]*71[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\] +[ ]*72[ ]+movq xmm1, XMMWORD PTR \[esp\] +[ ]*73[ ]+movq xmm1, DWORD PTR \[esp\] +[ ]*74[ ]+movq xmm1, WORD PTR \[esp\] +[ ]*75[ ]+movq xmm1, BYTE PTR \[esp\] +[ ]*76[ ]+movq XMMWORD PTR \[esp\],xmm1 +[ ]*77[ ]+movq DWORD PTR \[esp\],xmm1 +[ ]*78[ ]+movq WORD PTR \[esp\],xmm1 +[ ]*79[ ]+movq BYTE PTR \[esp\],xmm1 +[ ]*80[ ]+fnstsw eax +[ ]*81[ ]+fnstsw al +[ ]*82[ ]+fstsw eax +[ ]*83[ ]+fstsw al +[ ]*84[ ]+ +[ ]*85[ ]+movsx ax, \[eax\] +[ ]*86[ ]+movsx eax, \[eax\] +[ ]*87[ ]+movzx ax, \[eax\] +[ ]*88[ ]+movzx eax, \[eax\] +[ ]*89[ ]+ +[ ]*90[ ]+movnti word ptr \[eax\], ax diff --git a/gas/testsuite/gas/i386/inval.s b/gas/testsuite/gas/i386/inval.s index e33a148219e..4818baa8081 100644 --- a/gas/testsuite/gas/i386/inval.s +++ b/gas/testsuite/gas/i386/inval.s @@ -1,4 +1,5 @@ .text + .allow_index_reg # All the following should be illegal mov (%dx),%al mov (%eax,%esp,2),%al @@ -58,6 +59,11 @@ foo: jaw foo movnti %ax, (%eax) movntiw %ax, (%eax) + add (%si,%esi), %eax + add (%esi,%si), %eax + add (%eiz), %eax + add (%eax), %eiz + .intel_syntax noprefix cvtsi2ss xmm1,QWORD PTR [eax] cvtsi2sd xmm1,QWORD PTR [eax] diff --git a/gas/testsuite/gas/i386/x86-64-inval.l b/gas/testsuite/gas/i386/x86-64-inval.l index 11d518653ad..ad460c2f888 100644 --- a/gas/testsuite/gas/i386/x86-64-inval.l +++ b/gas/testsuite/gas/i386/x86-64-inval.l @@ -1,5 +1,4 @@ .*: Assembler messages: -.*:3: Error: .* .*:4: Error: .* .*:5: Error: .* .*:6: Error: .* @@ -61,8 +60,9 @@ .*:62: Error: .* .*:63: Error: .* .*:64: Error: .* -.*:66: Error: .* +.*:65: Error: .* .*:67: Error: .* +.*:68: Error: .* .*:70: Error: .* .*:71: Error: .* .*:72: Error: .* @@ -75,8 +75,6 @@ .*:79: Error: .* .*:80: Error: .* .*:81: Error: .* -.*:82: Error: .* -.*:83: Error: .* .*:84: Error: .* .*:85: Error: .* .*:86: Error: .* @@ -97,112 +95,143 @@ .*:101: Error: .* .*:102: Error: .* .*:103: Error: .* +.*:104: Error: .* +.*:105: Error: .* +.*:106: Error: .* +.*:107: Error: .* +.*:108: Error: .* +.*:109: Error: .* +.*:110: Error: .* +.*:111: Error: .* +.*:112: Error: .* +.*:113: Error: .* +.*:114: Error: .* +.*:115: Error: .* +.*:116: Error: .* +.*:117: Error: .* GAS LISTING .* [ ]*1[ ]+\.text -[ ]*2[ ]+\# All the following should be illegal for x86-64 -[ ]*3[ ]+aaa \# illegal -[ ]*4[ ]+aad \# illegal -[ ]*5[ ]+aam \# illegal -[ ]*6[ ]+aas \# illegal -[ ]*7[ ]+arpl %ax,%ax \# illegal -[ ]*8[ ]+bound %eax,\(%rax\) \# illegal -[ ]*9[ ]+calll \*%eax \# 32-bit data size not allowed -[ ]*10[ ]+calll \*\(%ax\) \# 32-bit data size not allowed -[ ]*11[ ]+calll \*\(%eax\) \# 32-bit data size not allowed -[ ]*12[ ]+calll \*\(%r8\) \# 32-bit data size not allowed -[ ]*13[ ]+calll \*\(%rax\) \# 32-bit data size not allowed -[ ]*14[ ]+callq \*\(%ax\) \# no 16-bit addressing -[ ]*15[ ]+daa \# illegal -[ ]*16[ ]+das \# illegal -[ ]*17[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands -[ ]*18[ ]+into \# illegal -[ ]*19[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter -[ ]*20[ ]+jmpl \*%eax \# 32-bit data size not allowed -[ ]*21[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed -[ ]*22[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed -[ ]*23[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed -[ ]*24[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed -[ ]*25[ ]+jmpq \*\(%ax\) \# no 16-bit addressing -[ ]*26[ ]+lcalll \$0,\$0 \# illegal -[ ]*27[ ]+lcallq \$0,\$0 \# illegal -[ ]*28[ ]+ldsl %eax,\(%rax\) \# illegal -[ ]*29[ ]+ldsq %rax,\(%rax\) \# illegal -[ ]*30[ ]+lesl %eax,\(%rax\) \# illegal -[ ]*31[ ]+lesq %rax,\(%rax\) \# illegal -[ ]*32[ ]+ljmpl \$0,\$0 \# illegal -[ ]*33[ ]+ljmpq \$0,\$0 \# illegal -[ ]*34[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed -[ ]*35[ ]+loopw foo \# No prefix exists to select CX as a counter -[ ]*36[ ]+loopew foo \# No prefix exists to select CX as a counter -[ ]*37[ ]+loopnew foo \# No prefix exists to select CX as a counter -[ ]*38[ ]+loopnzw foo \# No prefix exists to select CX as a counter -[ ]*39[ ]+loopzw foo \# No prefix exists to select CX as a counter -[ ]*40[ ]+leavel \# can't have 32-bit stack operands -[ ]*41[ ]+pop %ds \# illegal -[ ]*42[ ]+pop %es \# illegal -[ ]*43[ ]+pop %ss \# illegal -[ ]*44[ ]+popa \# illegal -[ ]*45[ ]+popl %eax \# can't have 32-bit stack operands -[ ]*46[ ]+push %cs \# illegal -[ ]*47[ ]+push %ds \# illegal -[ ]*48[ ]+push %es \# illegal -[ ]*49[ ]+push %ss \# illegal -[ ]*50[ ]+pusha \# illegal -[ ]*51[ ]+pushl %eax \# can't have 32-bit stack operands -[ ]*52[ ]+pushfl \# can't have 32-bit stack operands -[ ]*53[ ]+popfl \# can't have 32-bit stack operands -[ ]*54[ ]+retl \# can't have 32-bit stack operands -[ ]*55[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\. -[ ]*56[ ]+fnstsw %eax -[ ]*57[ ]+fnstsw %al +[ ]*2[ ]+\.allow_index_reg +[ ]*3[ ]+\# All the following should be illegal for x86-64 +[ ]*4[ ]+aaa \# illegal +[ ]*5[ ]+aad \# illegal +[ ]*6[ ]+aam \# illegal +[ ]*7[ ]+aas \# illegal +[ ]*8[ ]+arpl %ax,%ax \# illegal +[ ]*9[ ]+bound %eax,\(%rax\) \# illegal +[ ]*10[ ]+calll \*%eax \# 32-bit data size not allowed +[ ]*11[ ]+calll \*\(%ax\) \# 32-bit data size not allowed +[ ]*12[ ]+calll \*\(%eax\) \# 32-bit data size not allowed +[ ]*13[ ]+calll \*\(%r8\) \# 32-bit data size not allowed +[ ]*14[ ]+calll \*\(%rax\) \# 32-bit data size not allowed +[ ]*15[ ]+callq \*\(%ax\) \# no 16-bit addressing +[ ]*16[ ]+daa \# illegal +[ ]*17[ ]+das \# illegal +[ ]*18[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands +[ ]*19[ ]+into \# illegal +[ ]*20[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter +[ ]*21[ ]+jmpl \*%eax \# 32-bit data size not allowed +[ ]*22[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed +[ ]*23[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed +[ ]*24[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed +[ ]*25[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed +[ ]*26[ ]+jmpq \*\(%ax\) \# no 16-bit addressing +[ ]*27[ ]+lcalll \$0,\$0 \# illegal +[ ]*28[ ]+lcallq \$0,\$0 \# illegal +[ ]*29[ ]+ldsl %eax,\(%rax\) \# illegal +[ ]*30[ ]+ldsq %rax,\(%rax\) \# illegal +[ ]*31[ ]+lesl %eax,\(%rax\) \# illegal +[ ]*32[ ]+lesq %rax,\(%rax\) \# illegal +[ ]*33[ ]+ljmpl \$0,\$0 \# illegal +[ ]*34[ ]+ljmpq \$0,\$0 \# illegal +[ ]*35[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed +[ ]*36[ ]+loopw foo \# No prefix exists to select CX as a counter +[ ]*37[ ]+loopew foo \# No prefix exists to select CX as a counter +[ ]*38[ ]+loopnew foo \# No prefix exists to select CX as a counter +[ ]*39[ ]+loopnzw foo \# No prefix exists to select CX as a counter +[ ]*40[ ]+loopzw foo \# No prefix exists to select CX as a counter +[ ]*41[ ]+leavel \# can't have 32-bit stack operands +[ ]*42[ ]+pop %ds \# illegal +[ ]*43[ ]+pop %es \# illegal +[ ]*44[ ]+pop %ss \# illegal +[ ]*45[ ]+popa \# illegal +[ ]*46[ ]+popl %eax \# can't have 32-bit stack operands +[ ]*47[ ]+push %cs \# illegal +[ ]*48[ ]+push %ds \# illegal +[ ]*49[ ]+push %es \# illegal +[ ]*50[ ]+push %ss \# illegal +[ ]*51[ ]+pusha \# illegal +[ ]*52[ ]+pushl %eax \# can't have 32-bit stack operands +[ ]*53[ ]+pushfl \# can't have 32-bit stack operands +[ ]*54[ ]+popfl \# can't have 32-bit stack operands +[ ]*55[ ]+retl \# can't have 32-bit stack operands +[ ]*56[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\. +[ ]*57[ ]+fnstsw %eax GAS LISTING .* -[ ]*58[ ]+fstsw %eax -[ ]*59[ ]+fstsw %al -[ ]*60[ ]+in \$8,%rax -[ ]*61[ ]+out %rax,\$8 -[ ]*62[ ]+movzxl \(%rax\),%rax -[ ]*63[ ]+movnti %ax, \(%rax\) -[ ]*64[ ]+movntiw %ax, \(%rax\) -[ ]*65[ ]+ -[ ]*66[ ]+mov 0x80000000\(%rax\),%ebx -[ ]*67[ ]+mov 0x80000000,%ebx -[ ]*68[ ]+ -[ ]*69[ ]+\.intel_syntax noprefix -[ ]*70[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword -[ ]*71[ ]+movq xmm1, XMMWORD PTR \[rsp\] -[ ]*72[ ]+movq xmm1, DWORD PTR \[rsp\] -[ ]*73[ ]+movq xmm1, WORD PTR \[rsp\] -[ ]*74[ ]+movq xmm1, BYTE PTR \[rsp\] -[ ]*75[ ]+movq XMMWORD PTR \[rsp\],xmm1 -[ ]*76[ ]+movq DWORD PTR \[rsp\],xmm1 -[ ]*77[ ]+movq WORD PTR \[rsp\],xmm1 -[ ]*78[ ]+movq BYTE PTR \[rsp\],xmm1 -[ ]*79[ ]+fnstsw eax -[ ]*80[ ]+fnstsw al -[ ]*81[ ]+fstsw eax -[ ]*82[ ]+fstsw al -[ ]*83[ ]+in rax,8 -[ ]*84[ ]+out 8,rax -[ ]*85[ ]+movsx ax, \[rax\] -[ ]*86[ ]+movsx eax, \[rax\] -[ ]*87[ ]+movsx rax, \[rax\] -[ ]*88[ ]+movzx ax, \[rax\] -[ ]*89[ ]+movzx eax, \[rax\] -[ ]*90[ ]+movzx rax, \[rax\] -[ ]*91[ ]+movnti word ptr \[rax\], ax -[ ]*92[ ]+calld eax \# 32-bit data size not allowed -[ ]*93[ ]+calld \[ax\] \# 32-bit data size not allowed -[ ]*94[ ]+calld \[eax\] \# 32-bit data size not allowed -[ ]*95[ ]+calld \[r8\] \# 32-bit data size not allowed -[ ]*96[ ]+calld \[rax\] \# 32-bit data size not allowed -[ ]*97[ ]+callq \[ax\] \# no 16-bit addressing -[ ]*98[ ]+jmpd eax \# 32-bit data size not allowed -[ ]*99[ ]+jmpd \[ax\] \# 32-bit data size not allowed -[ ]*100[ ]+jmpd \[eax\] \# 32-bit data size not allowed -[ ]*101[ ]+jmpd \[r8\] \# 32-bit data size not allowed -[ ]*102[ ]+jmpd \[rax\] \# 32-bit data size not allowed -[ ]*103[ ]+jmpq \[ax\] \# no 16-bit addressing +[ ]*58[ ]+fnstsw %al +[ ]*59[ ]+fstsw %eax +[ ]*60[ ]+fstsw %al +[ ]*61[ ]+in \$8,%rax +[ ]*62[ ]+out %rax,\$8 +[ ]*63[ ]+movzxl \(%rax\),%rax +[ ]*64[ ]+movnti %ax, \(%rax\) +[ ]*65[ ]+movntiw %ax, \(%rax\) +[ ]*66[ ]+ +[ ]*67[ ]+mov 0x80000000\(%rax\),%ebx +[ ]*68[ ]+mov 0x80000000,%ebx +[ ]*69[ ]+ +[ ]*70[ ]+add \(%rip,%rsi\), %eax +[ ]*71[ ]+add \(%rsi,%rip\), %eax +[ ]*72[ ]+add \(,%rip\), %eax +[ ]*73[ ]+add \(%eip,%esi\), %eax +[ ]*74[ ]+add \(%esi,%eip\), %eax +[ ]*75[ ]+add \(,%eip\), %eax +[ ]*76[ ]+add \(%rsi,%esi\), %eax +[ ]*77[ ]+add \(%esi,%rsi\), %eax +[ ]*78[ ]+add \(%eiz\), %eax +[ ]*79[ ]+add \(%riz\), %eax +[ ]*80[ ]+add \(%rax\), %riz +[ ]*81[ ]+add \(%rax\), %eiz +[ ]*82[ ]+ +[ ]*83[ ]+\.intel_syntax noprefix +[ ]*84[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword +[ ]*85[ ]+movq xmm1, XMMWORD PTR \[rsp\] +[ ]*86[ ]+movq xmm1, DWORD PTR \[rsp\] +[ ]*87[ ]+movq xmm1, WORD PTR \[rsp\] +[ ]*88[ ]+movq xmm1, BYTE PTR \[rsp\] +[ ]*89[ ]+movq XMMWORD PTR \[rsp\],xmm1 +[ ]*90[ ]+movq DWORD PTR \[rsp\],xmm1 +[ ]*91[ ]+movq WORD PTR \[rsp\],xmm1 +[ ]*92[ ]+movq BYTE PTR \[rsp\],xmm1 +[ ]*93[ ]+fnstsw eax +[ ]*94[ ]+fnstsw al +[ ]*95[ ]+fstsw eax +[ ]*96[ ]+fstsw al +[ ]*97[ ]+in rax,8 +[ ]*98[ ]+out 8,rax +[ ]*99[ ]+movsx ax, \[rax\] +[ ]*100[ ]+movsx eax, \[rax\] +[ ]*101[ ]+movsx rax, \[rax\] +[ ]*102[ ]+movzx ax, \[rax\] +[ ]*103[ ]+movzx eax, \[rax\] +[ ]*104[ ]+movzx rax, \[rax\] +[ ]*105[ ]+movnti word ptr \[rax\], ax +[ ]*106[ ]+calld eax \# 32-bit data size not allowed +[ ]*107[ ]+calld \[ax\] \# 32-bit data size not allowed +[ ]*108[ ]+calld \[eax\] \# 32-bit data size not allowed +[ ]*109[ ]+calld \[r8\] \# 32-bit data size not allowed +[ ]*110[ ]+calld \[rax\] \# 32-bit data size not allowed +[ ]*111[ ]+callq \[ax\] \# no 16-bit addressing +[ ]*112[ ]+jmpd eax \# 32-bit data size not allowed +[ ]*113[ ]+jmpd \[ax\] \# 32-bit data size not allowed +[ ]*114[ ]+jmpd \[eax\] \# 32-bit data size not allowed + GAS LISTING .* + + +[ ]*115[ ]+jmpd \[r8\] \# 32-bit data size not allowed +[ ]*116[ ]+jmpd \[rax\] \# 32-bit data size not allowed +[ ]*117[ ]+jmpq \[ax\] \# no 16-bit addressing diff --git a/gas/testsuite/gas/i386/x86-64-inval.s b/gas/testsuite/gas/i386/x86-64-inval.s index fd5e8dc6659..2c2f5db48cf 100644 --- a/gas/testsuite/gas/i386/x86-64-inval.s +++ b/gas/testsuite/gas/i386/x86-64-inval.s @@ -1,4 +1,5 @@ .text + .allow_index_reg # All the following should be illegal for x86-64 aaa # illegal aad # illegal @@ -66,6 +67,19 @@ movntiw %ax, (%rax) mov 0x80000000(%rax),%ebx mov 0x80000000,%ebx + add (%rip,%rsi), %eax + add (%rsi,%rip), %eax + add (,%rip), %eax + add (%eip,%esi), %eax + add (%esi,%eip), %eax + add (,%eip), %eax + add (%rsi,%esi), %eax + add (%esi,%rsi), %eax + add (%eiz), %eax + add (%riz), %eax + add (%rax), %riz + add (%rax), %eiz + .intel_syntax noprefix cmpxchg16b dword ptr [rax] # Must be oword movq xmm1, XMMWORD PTR [rsp] -- 2.30.2