svn commit: r193376 - in projects/clangbsd: . cddl/lib/libzpool
contrib/gcc gnu/lib/csu gnu/lib/libgcc lib/csu/amd64
lib/csu/i386-elf lib/librt libexec/rtld-elf
secure/lib/libcrypto sys/boot/i386/b...
Ed Schouten
ed at FreeBSD.org
Wed Jun 3 13:19:14 UTC 2009
Author: ed
Date: Wed Jun 3 13:19:12 2009
New Revision: 193376
URL: http://svn.freebsd.org/changeset/base/193376
Log:
Add all local hacks to make apps build with Clang instead of GCC.
- libcrypto: Disable inline assembly, because of LLVM PR3678.
- libgcc: Build with GCC. Too many GCCisms.
- csu: Clang somehow overoptimizes the out of bound array indexing.
- gcc: Proper use of the inline keyword.
- libzpool: Uses #pragma weak. LLVM PR3679.
- librt:
- rtld-elf: Places data in different sections than GCC, which triggers
an assertion in rtld sources. Also uses #pragma weak. LLVM PR3679.
- Several bootloaders: No support for -fno-unit-at-a-time.
- loader: Issue with Clang's default library directories. To be
investigated.
Modified:
projects/clangbsd/Makefile.inc1
projects/clangbsd/cddl/lib/libzpool/Makefile
projects/clangbsd/contrib/gcc/bitmap.c
projects/clangbsd/contrib/gcc/cfg.c
projects/clangbsd/contrib/gcc/dominance.c
projects/clangbsd/contrib/gcc/haifa-sched.c
projects/clangbsd/contrib/gcc/longlong.h
projects/clangbsd/contrib/gcc/toplev.h
projects/clangbsd/gnu/lib/csu/Makefile
projects/clangbsd/gnu/lib/libgcc/Makefile
projects/clangbsd/lib/csu/amd64/Makefile
projects/clangbsd/lib/csu/i386-elf/Makefile
projects/clangbsd/lib/librt/Makefile
projects/clangbsd/libexec/rtld-elf/Makefile
projects/clangbsd/secure/lib/libcrypto/Makefile
projects/clangbsd/sys/boot/i386/boot2/Makefile
projects/clangbsd/sys/boot/i386/gptboot/Makefile
projects/clangbsd/sys/boot/i386/gptzfsboot/Makefile
projects/clangbsd/sys/boot/i386/loader/Makefile
projects/clangbsd/sys/boot/i386/zfsboot/Makefile
Modified: projects/clangbsd/Makefile.inc1
==============================================================================
--- projects/clangbsd/Makefile.inc1 Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/Makefile.inc1 Wed Jun 3 13:19:12 2009 (r193376)
@@ -282,9 +282,9 @@ LIB32WMAKEENV= MAKEOBJDIRPREFIX=${OBJTRE
MACHINE_ARCH=i386 \
INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${TMPPATH} \
- CC="${CC} ${LIB32FLAGS}" \
+ CC="gcc ${LIB32FLAGS}" \
CXX="${CXX} ${LIB32FLAGS}" \
- OBJC="${OBJC} ${LIB32FLAGS}" \
+ OBJC="gcc ${LIB32FLAGS}" \
LD="${LD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \
AS="${AS} --32" \
LIBDIR=/usr/lib32 \
Modified: projects/clangbsd/cddl/lib/libzpool/Makefile
==============================================================================
--- projects/clangbsd/cddl/lib/libzpool/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/cddl/lib/libzpool/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -23,6 +23,13 @@ ATOMIC_SRCS= opensolaris_atomic.c
LIB= zpool
+.include <bsd.own.mk>
+
+# XXX: LLVM PR3679
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
ZFS_COMMON_SRCS= ${ZFS_COMMON_OBJS:C/.o$/.c/} vdev_file.c
ZFS_SHARED_SRCS= ${ZFS_SHARED_OBJS:C/.o$/.c/}
KERNEL_SRCS= kernel.c taskq.c util.c
Modified: projects/clangbsd/contrib/gcc/bitmap.c
==============================================================================
--- projects/clangbsd/contrib/gcc/bitmap.c Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/contrib/gcc/bitmap.c Wed Jun 3 13:19:12 2009 (r193376)
@@ -186,7 +186,7 @@ bitmap_elt_clear_from (bitmap head, bitm
/* Clear a bitmap by freeing the linked list. */
-inline void
+void
bitmap_clear (bitmap head)
{
if (head->first)
Modified: projects/clangbsd/contrib/gcc/cfg.c
==============================================================================
--- projects/clangbsd/contrib/gcc/cfg.c Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/contrib/gcc/cfg.c Wed Jun 3 13:19:12 2009 (r193376)
@@ -658,7 +658,7 @@ static void *first_edge_aux_obj = 0;
/* Allocate a memory block of SIZE as BB->aux. The obstack must
be first initialized by alloc_aux_for_blocks. */
-inline void
+void
alloc_aux_for_block (basic_block bb, int size)
{
/* Verify that aux field is clear. */
@@ -721,7 +721,7 @@ free_aux_for_blocks (void)
/* Allocate a memory edge of SIZE as BB->aux. The obstack must
be first initialized by alloc_aux_for_edges. */
-inline void
+void
alloc_aux_for_edge (edge e, int size)
{
/* Verify that aux field is clear. */
Modified: projects/clangbsd/contrib/gcc/dominance.c
==============================================================================
--- projects/clangbsd/contrib/gcc/dominance.c Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/contrib/gcc/dominance.c Wed Jun 3 13:19:12 2009 (r193376)
@@ -686,7 +686,7 @@ get_immediate_dominator (enum cdi_direct
/* Set the immediate dominator of the block possibly removing
existing edge. NULL can be used to remove any edge. */
-inline void
+void
set_immediate_dominator (enum cdi_direction dir, basic_block bb,
basic_block dominated_by)
{
Modified: projects/clangbsd/contrib/gcc/haifa-sched.c
==============================================================================
--- projects/clangbsd/contrib/gcc/haifa-sched.c Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/contrib/gcc/haifa-sched.c Wed Jun 3 13:19:12 2009 (r193376)
@@ -625,7 +625,7 @@ static rtx last_scheduled_insn;
This is the number of cycles between instruction issue and
instruction results. */
-HAIFA_INLINE int
+int
insn_cost (rtx insn, rtx link, rtx used)
{
return insn_cost1 (insn, used ? REG_NOTE_KIND (link) : REG_NOTE_MAX,
Modified: projects/clangbsd/contrib/gcc/longlong.h
==============================================================================
--- projects/clangbsd/contrib/gcc/longlong.h Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/contrib/gcc/longlong.h Wed Jun 3 13:19:12 2009 (r193376)
@@ -322,22 +322,22 @@ UDItype __umulsidi3 (USItype, USItype);
"g" ((USItype) (bl)))
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
__asm__ ("subl %5,%1\n\tsbbl %3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
+ : "=r" ((sh)), \
+ "=&r" ((sl)) \
: "0" ((USItype) (ah)), \
"g" ((USItype) (bh)), \
"1" ((USItype) (al)), \
"g" ((USItype) (bl)))
#define umul_ppmm(w1, w0, u, v) \
__asm__ ("mull %3" \
- : "=a" ((USItype) (w0)), \
- "=d" ((USItype) (w1)) \
+ : "=a" ((w0)), \
+ "=d" ((w1)) \
: "%0" ((USItype) (u)), \
"rm" ((USItype) (v)))
#define udiv_qrnnd(q, r, n1, n0, dv) \
__asm__ ("divl %4" \
- : "=a" ((USItype) (q)), \
- "=d" ((USItype) (r)) \
+ : "=a" ((q)), \
+ "=d" ((r)) \
: "0" ((USItype) (n0)), \
"1" ((USItype) (n1)), \
"rm" ((USItype) (dv)))
@@ -387,10 +387,10 @@ UDItype __umulsidi3 (USItype, USItype);
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
/* The cmp clears the condition bit. */ \
__asm__ ("cmp %0,%0\n\tsubx %1,%5\n\tsubx %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
+ : "=r" ((USItype)(sh)), \
+ "=&r" ((USItype)(sl)) \
+ : "0" ((USItype)(ah)), \
+ "r" ((USItype)(bh)), \
"1" ((USItype) (al)), \
"r" ((USItype) (bl)) \
: "cbit")
Modified: projects/clangbsd/contrib/gcc/toplev.h
==============================================================================
--- projects/clangbsd/contrib/gcc/toplev.h Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/contrib/gcc/toplev.h Wed Jun 3 13:19:12 2009 (r193376)
@@ -158,7 +158,7 @@ extern int exact_log2 (
extern int floor_log2 (unsigned HOST_WIDE_INT);
/* Inline versions of the above for speed. */
-#if GCC_VERSION >= 3004
+#if 0
# if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
# define CLZ_HWI __builtin_clzl
# define CTZ_HWI __builtin_ctzl
Modified: projects/clangbsd/gnu/lib/csu/Makefile
==============================================================================
--- projects/clangbsd/gnu/lib/csu/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/gnu/lib/csu/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -3,6 +3,11 @@
.include <bsd.own.mk>
MK_SSP= no
+# XXX: prevents infinite loop on startup
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
GCCDIR= ${.CURDIR}/../../../contrib/gcc
GCCLIB= ${.CURDIR}/../../../contrib/gcclibs
CCDIR= ${.CURDIR}/../../usr.bin/cc
Modified: projects/clangbsd/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/clangbsd/gnu/lib/libgcc/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/gnu/lib/libgcc/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -9,6 +9,11 @@ SHLIBDIR?= /lib
.include <bsd.own.mk>
.include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
+# XXX: a lot of missing GCC builtins
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
.PATH: ${GCCDIR}/config/${GCC_CPU} ${GCCDIR}/config ${GCCDIR}
CFLAGS+= -DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \
Modified: projects/clangbsd/lib/csu/amd64/Makefile
==============================================================================
--- projects/clangbsd/lib/csu/amd64/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/lib/csu/amd64/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -1,7 +1,14 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.PATH: ${.CURDIR}/../common
+# XXX: prevents infinite loop on startup
+.if ${MK_CLANG_IS_CC} != "no"
+CC= gcc
+.endif
+
SRCS= crt1.c crti.S crtn.S
OBJS= ${SRCS:N*.h:R:S/$/.o/g}
OBJS+= gcrt1.o
Modified: projects/clangbsd/lib/csu/i386-elf/Makefile
==============================================================================
--- projects/clangbsd/lib/csu/i386-elf/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/lib/csu/i386-elf/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -1,7 +1,14 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.PATH: ${.CURDIR}/../common
+# XXX: prevents infinite loop on startup
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
SRCS= crt1.c crti.S crtn.S
FILES= ${SRCS:N*.h:R:S/$/.o/g} gcrt1.o
FILESOWN= ${LIBOWN}
Modified: projects/clangbsd/lib/librt/Makefile
==============================================================================
--- projects/clangbsd/lib/librt/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/lib/librt/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -1,5 +1,12 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
+# XXX: LLVM PR3678
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
LIB=rt
SHLIB_MAJOR= 1
CFLAGS+=-I${.CURDIR}/../libc/include -I${.CURDIR}
Modified: projects/clangbsd/libexec/rtld-elf/Makefile
==============================================================================
--- projects/clangbsd/libexec/rtld-elf/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/libexec/rtld-elf/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -3,6 +3,11 @@
.include <bsd.own.mk>
MK_SSP= no
+# XXX: prevents failed assertion on startup
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
PROG?= ld-elf.so.1
SRCS= rtld_start.S \
reloc.c rtld.c rtld_lock.c map_object.c \
Modified: projects/clangbsd/secure/lib/libcrypto/Makefile
==============================================================================
--- projects/clangbsd/secure/lib/libcrypto/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/secure/lib/libcrypto/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -3,11 +3,12 @@
SHLIBDIR?= /lib
SUBDIR= engines
-.include <bsd.own.mk>
-
LIB= crypto
SHLIB_MAJOR= 5
+# XXX: LLVM PR3678
+CFLAGS+= -DOPENSSL_NO_INLINE_ASM
+
NO_LINT=
.if exists(Makefile.man)
Modified: projects/clangbsd/sys/boot/i386/boot2/Makefile
==============================================================================
--- projects/clangbsd/sys/boot/i386/boot2/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/sys/boot/i386/boot2/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -1,5 +1,11 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
FILES= boot boot1 boot2
NM?= nm
Modified: projects/clangbsd/sys/boot/i386/gptboot/Makefile
==============================================================================
--- projects/clangbsd/sys/boot/i386/gptboot/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/sys/boot/i386/gptboot/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -1,5 +1,11 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
.PATH: ${.CURDIR}/../boot2
FILES= gptboot
Modified: projects/clangbsd/sys/boot/i386/gptzfsboot/Makefile
==============================================================================
--- projects/clangbsd/sys/boot/i386/gptzfsboot/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/sys/boot/i386/gptzfsboot/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -1,5 +1,11 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
.PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../gptboot ${.CURDIR}/../zfsboot
FILES= gptzfsboot
Modified: projects/clangbsd/sys/boot/i386/loader/Makefile
==============================================================================
--- projects/clangbsd/sys/boot/i386/loader/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/sys/boot/i386/loader/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -3,6 +3,11 @@
.include <bsd.own.mk>
MK_SSP= no
+# XXX: broken compiler include paths
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
PROG= loader.sym
INTERNALPROG=
NEWVERSWHAT= "bootstrap loader" i386
Modified: projects/clangbsd/sys/boot/i386/zfsboot/Makefile
==============================================================================
--- projects/clangbsd/sys/boot/i386/zfsboot/Makefile Wed Jun 3 09:44:22 2009 (r193375)
+++ projects/clangbsd/sys/boot/i386/zfsboot/Makefile Wed Jun 3 13:19:12 2009 (r193376)
@@ -1,5 +1,11 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
+.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc"
+CC= gcc
+.endif
+
.PATH: ${.CURDIR}/../boot2
FILES= zfsboot
More information about the svn-src-projects
mailing list