]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas: scfi: add missing ginsn-cofi-1 testcase files
authorIndu Bhagat <indu.bhagat@oracle.com>
Tue, 30 Jan 2024 08:35:04 +0000 (00:35 -0800)
committerIndu Bhagat <indu.bhagat@oracle.com>
Tue, 30 Jan 2024 08:41:37 +0000 (00:41 -0800)
Previous commit a58dc5427f0 intended to bring the following two commits
from master branch:

 91cdbed4d7b gas: scfi: untraceable control flow should be a hard error
 16cbeae1b27 x86: testsuite: scfi: adjust COFI testcase

But missed adding the testcase files. Fix the failure by adding the
missing files.

gas/testsuite/
* gas/scfi/x86_64/ginsn-cofi-1.l: New test.
* gas/scfi/x86_64/ginsn-cofi-1.s: Likewise.

gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.s [new file with mode: 0644]

diff --git a/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l b/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.l
new file mode 100644 (file)
index 0000000..ab6b50d
--- /dev/null
@@ -0,0 +1,38 @@
+.*: Assembler messages:
+.*:20: Error: untraceable control flow for func 'foo'
+GAS LISTING .*
+
+
+   1                   # Testcase with a variety of "change of flow instructions"
+   2                   #
+   3                   # This test does not have much going on wrt synthesis of CFI;
+   4                   # it just aims to ensure x8_64 -> ginsn decoding behaves
+   5                   # gracefully for these "change of flow instructions"
+   6                           .text
+   7                           .globl  foo
+   8                           .type   foo, @function
+   8                   ginsn: SYM FUNC_BEGIN
+   9                   foo:
+   9                   ginsn: SYM foo
+  10 \?\?\?\? 4801D0                   addq    %rdx, %rax
+  10                   ginsn: ADD %r1, %r0, %r0
+  11 \?\?\?\? E200                     loop    foo
+  11                   ginsn: JCC 
+  12 \?\?\?\? 3EFFE0                   notrack jmp     \*%rax
+  12                   ginsn: JMP %r0, 
+  13 \?\?\?\? 41FFD0                   call    \*%r8
+  13                   ginsn: CALL
+  14 \?\?\?\? 67E305                   jecxz   .L179
+  14                   ginsn: JCC 
+  15 \?\?\?\? FF6730                   jmp     \*48\(%rdi\)
+  15                   ginsn: JMP %r5, 
+  16 \?\?\?\? 7000                     jo      .L179
+  16                   ginsn: JCC 
+  17                   .L179:
+  17                   ginsn: SYM .L179
+  18 \?\?\?\? C3                       ret
+  18                   ginsn: RET
+  19                   .LFE0:
+  19                   ginsn: SYM .LFE0
+  20                           .size   foo, .-foo
+  20                   ginsn: SYM FUNC_END
diff --git a/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.s b/gas/testsuite/gas/scfi/x86_64/ginsn-cofi-1.s
new file mode 100644 (file)
index 0000000..0a63910
--- /dev/null
@@ -0,0 +1,20 @@
+# Testcase with a variety of "change of flow instructions"
+#
+# This test does not have much going on wrt synthesis of CFI;
+# it just aims to ensure x8_64 -> ginsn decoding behaves
+# gracefully for these "change of flow instructions"
+       .text
+       .globl  foo
+       .type   foo, @function
+foo:
+       addq    %rdx, %rax
+       loop    foo
+       notrack jmp     *%rax
+       call    *%r8
+       jecxz   .L179
+       jmp     *48(%rdi)
+       jo      .L179
+.L179:
+       ret
+.LFE0:
+       .size   foo, .-foo