Add CFI to x86 ceil / floor / trunc (bug 16681)

Message ID Pine.LNX.4.64.1406162217170.14606@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers June 16, 2014, 10:17 p.m. UTC
  This patch adds CFI to the sysdeps/i386/fpu/ implementations of ceil,
floor and trunc functions, for consistency with other x86 .S files in
glibc which have CFI for stack adjustments.

Tested x86.

2014-06-16  Joseph Myers  <joseph@codesourcery.com>

	[BZ #16681]
	* sysdeps/i386/fpu/s_ceil.S (__ceil): Add CFI.
	* sysdeps/i386/fpu/s_ceilf.S (__ceilf): Likewise.
	* sysdeps/i386/fpu/s_ceill.S (__ceill): Likewise.
	* sysdeps/i386/fpu/s_floor.S (__floor): Likewise.
	* sysdeps/i386/fpu/s_floorf.S (__floorf): Likewise.
	* sysdeps/i386/fpu/s_floorl.S (__floorl): Likewise.
	* sysdeps/i386/fpu/s_trunc.S (__trunc): Likewise.
	* sysdeps/i386/fpu/s_truncf.S (__truncf): Likewise.
	* sysdeps/i386/fpu/s_truncl.S (__truncl): Likewise.
  

Comments

Roland McGrath June 16, 2014, 10:26 p.m. UTC | #1
Looks right off hand.
  

Patch

diff --git a/sysdeps/i386/fpu/s_ceil.S b/sysdeps/i386/fpu/s_ceil.S
index b015912..f32fa26 100644
--- a/sysdeps/i386/fpu/s_ceil.S
+++ b/sysdeps/i386/fpu/s_ceil.S
@@ -10,6 +10,7 @@  RCSID("$NetBSD: s_ceil.S,v 1.4 1995/05/08 23:52:13 jtc Exp $")
 ENTRY(__ceil)
 	fldl	4(%esp)
 	subl	$8,%esp
+	cfi_adjust_cfa_offset (8)
 
 	fstcw	4(%esp)			/* store fpu control word */
 
@@ -27,6 +28,7 @@  ENTRY(__ceil)
 	fldcw	4(%esp)			/* restore original control word */
 
 	addl	$8,%esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END (__ceil)
 weak_alias (__ceil, ceil)
diff --git a/sysdeps/i386/fpu/s_ceilf.S b/sysdeps/i386/fpu/s_ceilf.S
index 352d40d..4fe703b 100644
--- a/sysdeps/i386/fpu/s_ceilf.S
+++ b/sysdeps/i386/fpu/s_ceilf.S
@@ -10,6 +10,7 @@  RCSID("$NetBSD: s_ceilf.S,v 1.3 1995/05/08 23:52:44 jtc Exp $")
 ENTRY(__ceilf)
 	flds	4(%esp)
 	subl	$8,%esp
+	cfi_adjust_cfa_offset (8)
 
 	fstcw	4(%esp)			/* store fpu control word */
 
@@ -27,6 +28,7 @@  ENTRY(__ceilf)
 	fldcw	4(%esp)			/* restore original control word */
 
 	addl	$8,%esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END (__ceilf)
 weak_alias (__ceilf, ceilf)
diff --git a/sysdeps/i386/fpu/s_ceill.S b/sysdeps/i386/fpu/s_ceill.S
index 0128966..4b272c5 100644
--- a/sysdeps/i386/fpu/s_ceill.S
+++ b/sysdeps/i386/fpu/s_ceill.S
@@ -11,6 +11,7 @@  RCSID("$NetBSD: $")
 ENTRY(__ceill)
 	fldt	4(%esp)
 	subl	$8,%esp
+	cfi_adjust_cfa_offset (8)
 
 	fstcw	4(%esp)			/* store fpu control word */
 
@@ -28,6 +29,7 @@  ENTRY(__ceill)
 	fldcw	4(%esp)			/* restore original control word */
 
 	addl	$8,%esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END (__ceill)
 weak_alias (__ceill, ceill)
diff --git a/sysdeps/i386/fpu/s_floor.S b/sysdeps/i386/fpu/s_floor.S
index 20a8660..2d6287d 100644
--- a/sysdeps/i386/fpu/s_floor.S
+++ b/sysdeps/i386/fpu/s_floor.S
@@ -10,6 +10,7 @@  RCSID("$NetBSD: s_floor.S,v 1.4 1995/05/09 00:01:59 jtc Exp $")
 ENTRY(__floor)
 	fldl	4(%esp)
 	subl	$8,%esp
+	cfi_adjust_cfa_offset (8)
 
 	fstcw	4(%esp)			/* store fpu control word */
 
@@ -27,6 +28,7 @@  ENTRY(__floor)
 	fldcw	4(%esp)			/* restore original control word */
 
 	addl	$8,%esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END (__floor)
 weak_alias (__floor, floor)
diff --git a/sysdeps/i386/fpu/s_floorf.S b/sysdeps/i386/fpu/s_floorf.S
index eca93a2..e969fbe 100644
--- a/sysdeps/i386/fpu/s_floorf.S
+++ b/sysdeps/i386/fpu/s_floorf.S
@@ -10,6 +10,7 @@  RCSID("$NetBSD: s_floorf.S,v 1.3 1995/05/09 00:04:32 jtc Exp $")
 ENTRY(__floorf)
 	flds	4(%esp)
 	subl	$8,%esp
+	cfi_adjust_cfa_offset (8)
 
 	fstcw	4(%esp)			/* store fpu control word */
 
@@ -27,6 +28,7 @@  ENTRY(__floorf)
 	fldcw	4(%esp)			/* restore original control word */
 
 	addl	$8,%esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END (__floorf)
 weak_alias (__floorf, floorf)
diff --git a/sysdeps/i386/fpu/s_floorl.S b/sysdeps/i386/fpu/s_floorl.S
index c2bf091..1206554 100644
--- a/sysdeps/i386/fpu/s_floorl.S
+++ b/sysdeps/i386/fpu/s_floorl.S
@@ -11,6 +11,7 @@  RCSID("$NetBSD: $")
 ENTRY(__floorl)
 	fldt	4(%esp)
 	subl	$8,%esp
+	cfi_adjust_cfa_offset (8)
 
 	fstcw	4(%esp)			/* store fpu control word */
 
@@ -28,6 +29,7 @@  ENTRY(__floorl)
 	fldcw	4(%esp)			/* restore original control word */
 
 	addl	$8,%esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END (__floorl)
 weak_alias (__floorl, floorl)
diff --git a/sysdeps/i386/fpu/s_trunc.S b/sysdeps/i386/fpu/s_trunc.S
index 5a14864..a5f8fc7 100644
--- a/sysdeps/i386/fpu/s_trunc.S
+++ b/sysdeps/i386/fpu/s_trunc.S
@@ -22,6 +22,7 @@ 
 ENTRY(__trunc)
 	fldl	4(%esp)
 	subl	$8, %esp
+	cfi_adjust_cfa_offset (8)
 	fstcw	4(%esp)
 	movl	$0xc00, %edx
 	orl	4(%esp), %edx
@@ -30,6 +31,7 @@  ENTRY(__trunc)
 	frndint
 	fldcw	4(%esp)
 	addl	$8, %esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END(__trunc)
 weak_alias (__trunc, trunc)
diff --git a/sysdeps/i386/fpu/s_truncf.S b/sysdeps/i386/fpu/s_truncf.S
index d3b9385..746d52f 100644
--- a/sysdeps/i386/fpu/s_truncf.S
+++ b/sysdeps/i386/fpu/s_truncf.S
@@ -22,6 +22,7 @@ 
 ENTRY(__truncf)
 	flds	4(%esp)
 	subl	$8, %esp
+	cfi_adjust_cfa_offset (8)
 	fstcw	4(%esp)
 	movl	$0xc00, %edx
 	orl	4(%esp), %edx
@@ -30,6 +31,7 @@  ENTRY(__truncf)
 	frndint
 	fldcw	4(%esp)
 	addl	$8, %esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END(__truncf)
 weak_alias (__truncf, truncf)
diff --git a/sysdeps/i386/fpu/s_truncl.S b/sysdeps/i386/fpu/s_truncl.S
index 4bef0f4..d573855 100644
--- a/sysdeps/i386/fpu/s_truncl.S
+++ b/sysdeps/i386/fpu/s_truncl.S
@@ -22,6 +22,7 @@ 
 ENTRY(__truncl)
 	fldt	4(%esp)
 	subl	$8, %esp
+	cfi_adjust_cfa_offset (8)
 	fstcw	4(%esp)
 	movl	$0xc00, %edx
 	orl	4(%esp), %edx
@@ -30,6 +31,7 @@  ENTRY(__truncl)
 	frndint
 	fldcw	4(%esp)
 	addl	$8, %esp
+	cfi_adjust_cfa_offset (-8)
 	ret
 END(__truncl)
 weak_alias (__truncl, truncl)