From patchwork Thu Nov 15 14:52:27 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jack Howarth X-Patchwork-Id: 199316 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 826292C03FC for ; Fri, 16 Nov 2012 01:52:43 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1353595963; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition:User-Agent:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=4f99yooUbYmnxKNDL4Gwy6e8Lx8=; b=iX79n9u9dqE+5JX Mc5Po4oGj5s4ZWo9WaRb4mBf6/lALNcx4mHs6TV8I4RBrvDpJbknFNvYZSZ90WSR vS9SauzQlwSbJkpb3gG6qBCGxHXs2qfO6RLlaBHpRWse8QsUF3lUX7hyhozCEdEY lAIKOfgJU1Y4CipI2kl6vRVls+CE= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:Content-Disposition:User-Agent:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=rYHVKnd5Lp0neZRi3+RNxEwLNxjY4r6HnZuHbCg8Y3x9En+2L3msBEWwmViuU2 a9g19YZ3FGkkyY+PAoq0sFiES5QuPCtMCY0gzwTctzv9dUiLjWN5OI4gakXopc85 C2GQrA32qUJ1VUVLqpvbosIZgVi4t7PULxFmGThM2+QD0=; Received: (qmail 15599 invoked by alias); 15 Nov 2012 14:52:39 -0000 Received: (qmail 15589 invoked by uid 22791); 15 Nov 2012 14:52:38 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, TW_LV, TW_SV X-Spam-Check-By: sourceware.org Received: from bromo.med.uc.edu (HELO bromo.med.uc.edu) (129.137.3.146) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 15 Nov 2012 14:52:31 +0000 Received: from bromo.med.uc.edu (localhost.localdomain [127.0.0.1]) by bromo.med.uc.edu (Postfix) with ESMTP id 26DCDB005C; Thu, 15 Nov 2012 09:52:29 -0500 (EST) Received: (from howarth@localhost) by bromo.med.uc.edu (8.14.3/8.14.3/Submit) id qAFEqRCI008865; Thu, 15 Nov 2012 09:52:27 -0500 Date: Thu, 15 Nov 2012 09:52:27 -0500 From: Jack Howarth To: gcc-patches@gcc.gnu.org Cc: wmi@google.com, dodji@redhat.com, mikestump@comcast.net, iain@codesourcery.com, ro@CeBiTec.Uni-Bielefeld.DE, glider@google.com Subject: [PATCH][Revisedx2] Enable libsanitizer on darwin Message-ID: <20121115145227.GA8863@bromo.med.uc.edu> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org The attached patch assumes that the current mach_override/mach_override.h and mach_override/mach_override.c has been imported by the libsanitizer maintainers for use by darwin. The patch adds darwin to the supported target list in configure.tgt and defines USING_MACH_OVERRIDE for darwin in configure.ac. The definition of USING_MACH_OVERRIDE is used in Makefile.am as the test for appending mach_override/mach_override.c to libinterception_la_SOURCES. LINK_COMMAND_SPEC_A in gcc/config/darwin.h is modified to add an entry to handle faddress-sanitizer so that the required linkages are used for libasan. Tested on x86_64-apple-darwin12 against the mach_override/mach_override.h and mach_override/mach_override.c from llvm compiler-rt svn for both -m32 and -m64 with both use-after-free.c testcase and make -k check RUNTESTFLAGS="asan.exp --target_board=unix'{-m32,-m64}'" without regressions. Jack ps Note that this patch assumes that both mach_override.h and mach_override.c reside in a mach_override subdirectory in interception as is the case in the llvm's compiler-rt. pps The libsanitizer/configure.ac is readjusted for the bit-rot in the previous patch due to the checkin of libsanitizer multilib support (which is functional with this patch). gcc/ 2012-11-15 Jack Howarth * config/darwin.h (LINK_COMMAND_SPEC_A): Deal with -faddress-sanitizer. libsanitizer/ 2012-11-15 Jack Howarth * configure.tgt: Add darwin to supported targets. * configure.ac: Define USING_MACH_OVERRIDE when on darwin. * interception/Makefile.am: Compile mach_override.c when USING_MACH_OVERRIDE defined. * configure: Regenerated. * interception/Makefile.in: Likewise. Index: libsanitizer/configure.ac =================================================================== --- libsanitizer/configure.ac (revision 193532) +++ libsanitizer/configure.ac (working copy) @@ -22,6 +22,12 @@ AC_CANONICAL_SYSTEM target_alias=${target_alias-$host_alias} AC_SUBST(target_alias) +case "$host" in + *-*-darwin*) MACH_OVERRIDE=true ;; + *) MACH_OVERRIDE=false ;; +esac +AM_CONDITIONAL(USING_MACH_OVERRIDE, $MACH_OVERRIDE) + AM_INIT_AUTOMAKE(foreign) AM_ENABLE_MULTILIB(, ..) Index: libsanitizer/interception/Makefile.am =================================================================== --- libsanitizer/interception/Makefile.am (revision 193532) +++ libsanitizer/interception/Makefile.am (working copy) @@ -11,7 +11,11 @@ interception_files = \ interception_mac.cc \ interception_win.cc -libinterception_la_SOURCES = $(interception_files) +if USING_MACH_OVERRIDE +libinterception_la_SOURCES = $(interception_files) mach_override/mach_override.c +else +libinterception_la_SOURCES = $(interception_files) +endif # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and Index: libsanitizer/configure.tgt =================================================================== --- libsanitizer/configure.tgt (revision 193532) +++ libsanitizer/configure.tgt (working copy) @@ -22,6 +22,8 @@ case "${target}" in x86_64-*-linux* | i?86-*-linux*) ;; + x86_64-*-darwin* | i?86-*-darwin*) + ;; *) UNSUPPORTED=1 ;; Index: gcc/config/darwin.h =================================================================== --- gcc/config/darwin.h (revision 193532) +++ gcc/config/darwin.h (working copy) @@ -180,6 +180,8 @@ extern GTY(()) int darwin_ms_struct; %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ %{fopenmp|ftree-parallelize-loops=*: \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \ + %{faddress-sanitizer: \ + %{static|static-libgcc|static-libstdc++|static-libgfortran: -framework CoreFoundation libasan.a%s; : -framework CoreFoundation -lasan } } \ %{fgnu-tm: \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libitm.a%s; : -litm } } \ %{!nostdlib:%{!nodefaultlibs:\