From owner-svn-src-projects@FreeBSD.ORG Wed Jun 3 13:19:14 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 09BE1106564A; Wed, 3 Jun 2009 13:19:14 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E9BC58FC12; Wed, 3 Jun 2009 13:19:13 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n53DJDt9055420; Wed, 3 Jun 2009 13:19:13 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n53DJCOQ055400; Wed, 3 Jun 2009 13:19:12 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <200906031319.n53DJCOQ055400@svn.freebsd.org> From: Ed Schouten Date: Wed, 3 Jun 2009 13:19:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: 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... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2009 13:19:14 -0000 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 + +# 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 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 .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 + .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 + .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 + +# 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 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 - 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 + +.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 + +.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 + +.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 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 + +.if ${MK_CLANG_IS_CC} != "no" && ${CC} == "cc" +CC= gcc +.endif + .PATH: ${.CURDIR}/../boot2 FILES= zfsboot