This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[committed, PATCH] Add ifunc tests for call, jmp, add, test


	* ld-ifunc/ifunc-21-i386.s: Add tests for call, jmp, add, test.
	* ld-ifunc/ifunc-21-x86-64.s: Likewise.
	* ld-ifunc/ifunc-22-i386.s: Likewise.
	* ld-ifunc/ifunc-22-x86-64.s: Likewise.
	* ld-ifunc/ifunc-21-i386.d: Updated.
	* ld-ifunc/ifunc-21-x86-64.d: Likewise.
	* ld-ifunc/ifunc-22-i386.d: Likewise.
	* ld-ifunc/ifunc-22-x86-64.d: Likewise.
---
 ld/testsuite/ChangeLog                  | 13 ++++++++++++-
 ld/testsuite/ld-ifunc/ifunc-21-i386.d   | 24 +++++-------------------
 ld/testsuite/ld-ifunc/ifunc-21-i386.s   |  8 ++++----
 ld/testsuite/ld-ifunc/ifunc-21-x86-64.d | 23 ++++++-----------------
 ld/testsuite/ld-ifunc/ifunc-21-x86-64.s |  4 ++++
 ld/testsuite/ld-ifunc/ifunc-22-i386.d   | 24 +++++-------------------
 ld/testsuite/ld-ifunc/ifunc-22-i386.s   |  8 ++++----
 ld/testsuite/ld-ifunc/ifunc-22-x86-64.d | 23 ++++++-----------------
 ld/testsuite/ld-ifunc/ifunc-22-x86-64.s |  4 ++++
 9 files changed, 50 insertions(+), 81 deletions(-)

diff --git a/ld/testsuite/ld-ifunc/ifunc-21-i386.d b/ld/testsuite/ld-ifunc/ifunc-21-i386.d
index 4c3a6a3..c7ca811 100644
--- a/ld/testsuite/ld-ifunc/ifunc-21-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-21-i386.d
@@ -5,26 +5,12 @@
 
 .*: +file format .*
 
-
-Disassembly of section .plt:
-
-0+8048080 <.plt>:
-[ 	]*[a-f0-9]+:	ff 25 b8 90 04 08    	jmp    \*0x80490b8
-[ 	]*[a-f0-9]+:	68 00 00 00 00       	push   \$0x0
-[ 	]*[a-f0-9]+:	e9 00 00 00 00       	jmp    8048090 <__start>
-
-Disassembly of section .text:
-
+#...
 0+8048090 <__start>:
-[ 	]*[a-f0-9]+:	e8 00 00 00 00       	call   8048095 <__start\+0x5>
-[ 	]*[a-f0-9]+:	5b                   	pop    %ebx
-[ 	]*[a-f0-9]+:	81 c3 17 10 00 00    	add    \$0x1017,%ebx
+[ 	]*[a-f0-9]+:	ff 93 0c 00 00 00    	call   \*0xc\(%ebx\)
+[ 	]*[a-f0-9]+:	ff a3 0c 00 00 00    	jmp    \*0xc\(%ebx\)
+[ 	]*[a-f0-9]+:	03 83 0c 00 00 00    	add    0xc\(%ebx\),%eax
 [ 	]*[a-f0-9]+:	8b 83 0c 00 00 00    	mov    0xc\(%ebx\),%eax
+[ 	]*[a-f0-9]+:	85 83 0c 00 00 00    	test   %eax,0xc\(%ebx\)
 [ 	]*[a-f0-9]+:	8d ([0-9a-f]{2} ){5}[ 	]+lea[ 	]+.*
-
-0+80480a8 <foo>:
-[ 	]*[a-f0-9]+:	c3                   	ret    
-
-0+80480a9 <bar>:
-[ 	]*[a-f0-9]+:	c3                   	ret    
 #pass
diff --git a/ld/testsuite/ld-ifunc/ifunc-21-i386.s b/ld/testsuite/ld-ifunc/ifunc-21-i386.s
index e1af106..92eb55e 100644
--- a/ld/testsuite/ld-ifunc/ifunc-21-i386.s
+++ b/ld/testsuite/ld-ifunc/ifunc-21-i386.s
@@ -9,11 +9,11 @@ _start:
 	.global __start
 __start:
 	.type __start,"function"
-	call	.L6
-.L6:
-	popl	%ebx
-	addl	$_GLOBAL_OFFSET_TABLE_+[.-.L6], %ebx
+	call	*foo@GOT(%ebx)
+	jmp	*foo@GOT(%ebx)
+	add	foo@GOT(%ebx), %eax
 	mov	foo@GOT(%ebx), %eax
+	test	%eax, foo@GOT(%ebx)
 	mov	bar@GOT(%ebx), %eax
 	.type	foo, %gnu_indirect_function
 foo:
diff --git a/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d
index ea46631..53ccd5a 100644
--- a/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d
+++ b/ld/testsuite/ld-ifunc/ifunc-21-x86-64.d
@@ -5,23 +5,12 @@
 
 .*: +file format .*
 
-
-Disassembly of section .plt:
-
-0+4000d0 <.plt>:
-[ 	]*[a-f0-9]+:	ff 25 32 00 20 00    	jmpq   \*0x200032\(%rip\)        # 600108 <_GLOBAL_OFFSET_TABLE_\+0x18>
-[ 	]*[a-f0-9]+:	68 00 00 00 00       	pushq  \$0x0
-[ 	]*[a-f0-9]+:	e9 00 00 00 00       	jmpq   4000e0 <__start>
-
-Disassembly of section .text:
-
+#...
 0+4000e0 <__start>:
-[ 	]*[a-f0-9]+:	48 8b 05 21 00 20 00 	mov    0x200021\(%rip\),%rax        # 600108 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	ff 15 42 00 20 00    	callq  \*0x200042\(%rip\)        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	ff 25 3c 00 20 00    	jmpq   \*0x20003c\(%rip\)        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	48 03 05 35 00 20 00 	add    0x200035\(%rip\),%rax        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	48 8b 05 2e 00 20 00 	mov    0x20002e\(%rip\),%rax        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	48 85 05 27 00 20 00 	test   %rax,0x200027\(%rip\)        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
 [ 	]*[a-f0-9]+:	48 8d ([0-9a-f]{2} ){5}[ 	]+lea[ 	]+.*
-
-0+4000ee <foo>:
-[ 	]*[a-f0-9]+:	c3                   	retq   
-
-0+4000ef <bar>:
-[ 	]*[a-f0-9]+:	c3                   	retq   
 #pass
diff --git a/ld/testsuite/ld-ifunc/ifunc-21-x86-64.s b/ld/testsuite/ld-ifunc/ifunc-21-x86-64.s
index 0cf92ac..9d5d028 100644
--- a/ld/testsuite/ld-ifunc/ifunc-21-x86-64.s
+++ b/ld/testsuite/ld-ifunc/ifunc-21-x86-64.s
@@ -9,7 +9,11 @@ _start:
 	.global __start
 __start:
 	.type __start,"function"
+	call	*foo@GOTPCREL(%rip)
+	jmp	*foo@GOTPCREL(%rip)
+	add	foo@GOTPCREL(%rip), %rax
 	movq    foo@GOTPCREL(%rip), %rax
+	test	%rax, foo@GOTPCREL(%rip)
 	movq    bar@GOTPCREL(%rip), %rax
 	.type foo, %gnu_indirect_function
 foo:
diff --git a/ld/testsuite/ld-ifunc/ifunc-22-i386.d b/ld/testsuite/ld-ifunc/ifunc-22-i386.d
index 4c3a6a3..c7ca811 100644
--- a/ld/testsuite/ld-ifunc/ifunc-22-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-22-i386.d
@@ -5,26 +5,12 @@
 
 .*: +file format .*
 
-
-Disassembly of section .plt:
-
-0+8048080 <.plt>:
-[ 	]*[a-f0-9]+:	ff 25 b8 90 04 08    	jmp    \*0x80490b8
-[ 	]*[a-f0-9]+:	68 00 00 00 00       	push   \$0x0
-[ 	]*[a-f0-9]+:	e9 00 00 00 00       	jmp    8048090 <__start>
-
-Disassembly of section .text:
-
+#...
 0+8048090 <__start>:
-[ 	]*[a-f0-9]+:	e8 00 00 00 00       	call   8048095 <__start\+0x5>
-[ 	]*[a-f0-9]+:	5b                   	pop    %ebx
-[ 	]*[a-f0-9]+:	81 c3 17 10 00 00    	add    \$0x1017,%ebx
+[ 	]*[a-f0-9]+:	ff 93 0c 00 00 00    	call   \*0xc\(%ebx\)
+[ 	]*[a-f0-9]+:	ff a3 0c 00 00 00    	jmp    \*0xc\(%ebx\)
+[ 	]*[a-f0-9]+:	03 83 0c 00 00 00    	add    0xc\(%ebx\),%eax
 [ 	]*[a-f0-9]+:	8b 83 0c 00 00 00    	mov    0xc\(%ebx\),%eax
+[ 	]*[a-f0-9]+:	85 83 0c 00 00 00    	test   %eax,0xc\(%ebx\)
 [ 	]*[a-f0-9]+:	8d ([0-9a-f]{2} ){5}[ 	]+lea[ 	]+.*
-
-0+80480a8 <foo>:
-[ 	]*[a-f0-9]+:	c3                   	ret    
-
-0+80480a9 <bar>:
-[ 	]*[a-f0-9]+:	c3                   	ret    
 #pass
diff --git a/ld/testsuite/ld-ifunc/ifunc-22-i386.s b/ld/testsuite/ld-ifunc/ifunc-22-i386.s
index f6fc784..2e3202d 100644
--- a/ld/testsuite/ld-ifunc/ifunc-22-i386.s
+++ b/ld/testsuite/ld-ifunc/ifunc-22-i386.s
@@ -9,11 +9,11 @@ _start:
 	.global __start
 __start:
 	.type __start,"function"
-	call	.L6
-.L6:
-	popl	%ebx
-	addl	$_GLOBAL_OFFSET_TABLE_+[.-.L6], %ebx
+	call	*foo@GOT(%ebx)
+	jmp	*foo@GOT(%ebx)
+	add	foo@GOT(%ebx), %eax
 	mov	foo@GOT(%ebx), %eax
+	test	%eax, foo@GOT(%ebx)
 	mov	bar@GOT(%ebx), %eax
 	.global	foo
 	.type	foo, %gnu_indirect_function
diff --git a/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d b/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d
index ea46631..53ccd5a 100644
--- a/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d
+++ b/ld/testsuite/ld-ifunc/ifunc-22-x86-64.d
@@ -5,23 +5,12 @@
 
 .*: +file format .*
 
-
-Disassembly of section .plt:
-
-0+4000d0 <.plt>:
-[ 	]*[a-f0-9]+:	ff 25 32 00 20 00    	jmpq   \*0x200032\(%rip\)        # 600108 <_GLOBAL_OFFSET_TABLE_\+0x18>
-[ 	]*[a-f0-9]+:	68 00 00 00 00       	pushq  \$0x0
-[ 	]*[a-f0-9]+:	e9 00 00 00 00       	jmpq   4000e0 <__start>
-
-Disassembly of section .text:
-
+#...
 0+4000e0 <__start>:
-[ 	]*[a-f0-9]+:	48 8b 05 21 00 20 00 	mov    0x200021\(%rip\),%rax        # 600108 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	ff 15 42 00 20 00    	callq  \*0x200042\(%rip\)        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	ff 25 3c 00 20 00    	jmpq   \*0x20003c\(%rip\)        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	48 03 05 35 00 20 00 	add    0x200035\(%rip\),%rax        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	48 8b 05 2e 00 20 00 	mov    0x20002e\(%rip\),%rax        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
+[ 	]*[a-f0-9]+:	48 85 05 27 00 20 00 	test   %rax,0x200027\(%rip\)        # 600128 <_GLOBAL_OFFSET_TABLE_\+0x18>
 [ 	]*[a-f0-9]+:	48 8d ([0-9a-f]{2} ){5}[ 	]+lea[ 	]+.*
-
-0+4000ee <foo>:
-[ 	]*[a-f0-9]+:	c3                   	retq   
-
-0+4000ef <bar>:
-[ 	]*[a-f0-9]+:	c3                   	retq   
 #pass
diff --git a/ld/testsuite/ld-ifunc/ifunc-22-x86-64.s b/ld/testsuite/ld-ifunc/ifunc-22-x86-64.s
index f402c62..d4194a0 100644
--- a/ld/testsuite/ld-ifunc/ifunc-22-x86-64.s
+++ b/ld/testsuite/ld-ifunc/ifunc-22-x86-64.s
@@ -9,7 +9,11 @@ _start:
 	.global __start
 __start:
 	.type __start,"function"
+	call	*foo@GOTPCREL(%rip)
+	jmp	*foo@GOTPCREL(%rip)
+	add	foo@GOTPCREL(%rip), %rax
 	movq    foo@GOTPCREL(%rip), %rax
+	test	%rax, foo@GOTPCREL(%rip)
 	movq    bar@GOTPCREL(%rip), %rax
 	.type foo, %gnu_indirect_function
 	.globl foo
-- 
2.4.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]