From owner-freebsd-current@freebsd.org Wed Jul 25 14:45:58 2018 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 06C7D104CDD5 for ; Wed, 25 Jul 2018 14:45:58 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vps1.elischer.org", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 8F7C6811E0 for ; Wed, 25 Jul 2018 14:45:57 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from Julian-MBP3.local (124-169-199-167.dyn.iinet.net.au [124.169.199.167]) (authenticated bits=0) by vps1.elischer.org (8.15.2/8.15.2) with ESMTPSA id w6PEjqWL081905 (version=TLSv1.2 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Wed, 25 Jul 2018 07:45:55 -0700 (PDT) (envelope-from julian@freebsd.org) Subject: Re: gcc/clang interoperability problem with a custom "samba" build in recent -current. To: Yuri Pankov , freebsd-current References: <3dd60a0d-7a5e-e9f0-3018-d09b5b8ac389@yuripv.net> From: Julian Elischer Message-ID: <05c98785-4812-e519-5555-3d2315d28a1f@freebsd.org> Date: Wed, 25 Jul 2018 22:45:46 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <3dd60a0d-7a5e-e9f0-3018-d09b5b8ac389@yuripv.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jul 2018 14:45:58 -0000 On 22/7/18 3:11 am, Yuri Pankov wrote: > Yuri Pankov wrote: >> Julian Elischer wrote: >>> I would really like ot get some pointers as to who are our tools >>> committers at the moment, in particular who might know about these >>> issues. >>> The main issue for me at the moment is the ability to compile the >>> aesni code in Samba from clang.. >>> >>> Julian >>> >>> >>> On 20/7/18 7:32 pm, Julian Elischer wrote: >>>> compiling our samba with gcc 4.2.1 in 12 gave us some off behaviour >>>> when lld became the linker I think.. >>>> >>>> 1/ linking needed some directories added to some of the build >>>> scripts because previously apparently it looked in $SYSROOT/usr/lib >>>> by default and now it doesn't. >>>> >>>> 2/ compiling our samba produces a libtdb.so that has various symbols >>>> in it, (according to nm(1) ), but when we try link against it we get >>>> complaints about those symbols not being defined. >>>> >>>> 3/ an attempt to switch to using clang to compile everything >>>> leads to: >>>> >>>> >>>> "--aes-accel=intelaesni selected and compiler rejects >>>> -Wp,-E,-lang-asm. >>>> >>>> One wonders whether there is a clang equivalent of >>>> "-Wp,-E,-lang-asm" >>>> >>>> The AES acceleration is a configure option for the samba package. >>>> >>>> Apparently turning it on requires -Wp,-E,-lang-asm. >>>> >>>> which apparently gcc 4.2.1 has, but clang doesn't have. >>>> >>>>      FreeBSD clang version 6.0.1 (tags/RELEASE_601/final 335540) >>>> (based >>>>      on LLVM 6.0.1) >>>>      Target: x86_64-unknown-freebsd12.0 >>>>      Thread model: posix >>>>      InstalledDir: /usr/bin >>>> >>>> anyone know if there is a clang equivalent of -Wp, -E,-lang-asm? >> >> In later GCC versions the cpp's -lang-asm seems to be deprecated in >> favor of -x assembler-with-cpp as it conflicts with -l option. >> >> Could you try changing the -Wp,-E,-lang-asm to >> -Wp,-E,-xassembler-with-cpp? > > Just tried it myself, and if you indeed mean the > third_party/aesni-intel/aesni-intel_asm.c, the following seems to > work for me: > > clang -xassembler-with-cpp -c third_party/aesni-intel/aesni-intel_asm.c when I try it I get lots of errors due to hte fact that there are assembled comments that start with # and they are all cited as errors by clang. I had to put '//' before about 80 lines line that. > >>>> possible work arrounds include: >>>> >>>> 1/ Get gcc/lld to produce a library from which lld can find the >>>> symbols >>>> >>>> 2/ find a way to compile this with clang but everything else with >>>> gcc? >>>> >>>> 3/ find a way to allow clang to use >>>> -Wp,-E,-lang-asm >>>> >>>> whatever that means >>>> >>>> >>>> Thoughts from any tools people? > >