svn commit: r198072 - in projects/clangbsd/lib/libc: . amd64/gen i386/gen

Roman Divacky rdivacky at FreeBSD.org
Wed Oct 14 09:01:24 UTC 2009


Author: rdivacky
Date: Wed Oct 14 09:01:24 2009
New Revision: 198072
URL: http://svn.freebsd.org/changeset/base/198072

Log:
  Change ldexp.c to ldexp.s to workaround llvm bug this let libc to be
  compiled with clang.

Added:
  projects/clangbsd/lib/libc/amd64/gen/ldexp.s
  projects/clangbsd/lib/libc/i386/gen/ldexp.s
Modified:
  projects/clangbsd/lib/libc/Makefile
  projects/clangbsd/lib/libc/amd64/gen/Makefile.inc
  projects/clangbsd/lib/libc/i386/gen/Makefile.inc

Modified: projects/clangbsd/lib/libc/Makefile
==============================================================================
--- projects/clangbsd/lib/libc/Makefile	Wed Oct 14 08:49:38 2009	(r198071)
+++ projects/clangbsd/lib/libc/Makefile	Wed Oct 14 09:01:24 2009	(r198072)
@@ -5,11 +5,6 @@ SHLIBDIR?= /lib
 
 .include <bsd.own.mk>
 
-# XXX: LLVM PR879 in ldexp.c
-.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc" && ${MACHINE_ARCH} == "i386"
-CC=	gcc
-.endif
-
 # All library objects contain FreeBSD revision strings by default; they may be
 # excluded as a space-saving measure.  To produce a library that does
 # not contain these strings, add -DSTRIP_FBSDID (see <sys/cdefs.h>) to CFLAGS

Modified: projects/clangbsd/lib/libc/amd64/gen/Makefile.inc
==============================================================================
--- projects/clangbsd/lib/libc/amd64/gen/Makefile.inc	Wed Oct 14 08:49:38 2009	(r198071)
+++ projects/clangbsd/lib/libc/amd64/gen/Makefile.inc	Wed Oct 14 09:01:24 2009	(r198072)
@@ -1,8 +1,10 @@
 #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93
 # $FreeBSD$
 
+# XXX: the ldexp.s should be ldexp.c see
+# http://llvm.org/bugs/show_bug.cgi?id=879
 SRCS+=	_setjmp.S _set_tp.c rfork_thread.S setjmp.S sigsetjmp.S \
 	fabs.S modf.S \
-	infinity.c ldexp.c makecontext.c signalcontext.c \
+	infinity.c ldexp.s makecontext.c signalcontext.c \
 	flt_rounds.c fpgetmask.c fpsetmask.c fpgetprec.c fpsetprec.c \
 	fpgetround.c fpsetround.c fpgetsticky.c

Added: projects/clangbsd/lib/libc/amd64/gen/ldexp.s
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clangbsd/lib/libc/amd64/gen/ldexp.s	Wed Oct 14 09:01:24 2009	(r198072)
@@ -0,0 +1,53 @@
+	.file	"ldexp.c"
+#APP
+	.ident	"$FreeBSD$"
+#NO_APP
+	.text
+	.p2align 4,,15
+.globl ldexp
+	.type	ldexp, @function
+ldexp:
+.LFB2:
+	cvtsi2sd	%edi, %xmm1
+	movsd	%xmm0, -16(%rsp)
+	movsd	%xmm1, -8(%rsp)
+	fldl	-8(%rsp)
+	fldl	-16(%rsp)
+#APP
+	fscale 
+#NO_APP
+	fstp	%st(1)
+	fstpl	-16(%rsp)
+	movsd	-16(%rsp), %xmm0
+	ret
+.LFE2:
+	.size	ldexp, .-ldexp
+	.section	.eh_frame,"a", at progbits
+.Lframe1:
+	.long	.LECIE1-.LSCIE1
+.LSCIE1:
+	.long	0x0
+	.byte	0x1
+	.string	"zR"
+	.uleb128 0x1
+	.sleb128 -8
+	.byte	0x10
+	.uleb128 0x1
+	.byte	0x3
+	.byte	0xc
+	.uleb128 0x7
+	.uleb128 0x8
+	.byte	0x90
+	.uleb128 0x1
+	.align 8
+.LECIE1:
+.LSFDE1:
+	.long	.LEFDE1-.LASFDE1
+.LASFDE1:
+	.long	.LASFDE1-.Lframe1
+	.long	.LFB2
+	.long	.LFE2-.LFB2
+	.uleb128 0x0
+	.align 8
+.LEFDE1:
+	.ident	"GCC: (GNU) 4.2.1 20070719  [FreeBSD]"

Modified: projects/clangbsd/lib/libc/i386/gen/Makefile.inc
==============================================================================
--- projects/clangbsd/lib/libc/i386/gen/Makefile.inc	Wed Oct 14 08:49:38 2009	(r198071)
+++ projects/clangbsd/lib/libc/i386/gen/Makefile.inc	Wed Oct 14 09:01:24 2009	(r198072)
@@ -1,6 +1,8 @@
 #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93
 # $FreeBSD$
 
+# XXX: the ldexp.s should be ldexp.c see 
+# http://llvm.org/bugs/show_bug.cgi?id=879
 SRCS+=	_ctx_start.S _setjmp.S _set_tp.c fabs.S \
-	flt_rounds.c infinity.c ldexp.c makecontext.c modf.S \
+	flt_rounds.c infinity.c ldexp.s makecontext.c modf.S \
 	rfork_thread.S setjmp.S signalcontext.c sigsetjmp.S

Added: projects/clangbsd/lib/libc/i386/gen/ldexp.s
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clangbsd/lib/libc/i386/gen/ldexp.s	Wed Oct 14 09:01:24 2009	(r198072)
@@ -0,0 +1,22 @@
+	.file	"ldexp.c"
+#APP
+	.ident	"$FreeBSD$"
+#NO_APP
+	.text
+	.p2align 4,,15
+.globl ldexp
+	.type	ldexp, @function
+ldexp:
+	pushl	%ebp
+	movl	%esp, %ebp
+	fldl	8(%ebp)
+	fildl	16(%ebp)
+	fxch	%st(1)
+	popl	%ebp
+#APP
+	fscale 
+#NO_APP
+	fstp	%st(1)
+	ret
+	.size	ldexp, .-ldexp
+	.ident	"GCC: (GNU) 4.2.1 20070719  [FreeBSD]"


More information about the svn-src-projects mailing list