Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Jul 2018 22:11:19 +0300
From:      Yuri Pankov <yuripv@yuripv.net>
To:        Julian Elischer <julian@freebsd.org>, freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: gcc/clang interoperability problem with a custom "samba" build in recent -current.
Message-ID:  <3dd60a0d-7a5e-e9f0-3018-d09b5b8ac389@yuripv.net>
In-Reply-To: <c77253cd-3fca-a3a6-2f98-73ecb8c656bc@yuripv.net>
References:  <abe47622-ba13-7c3f-9ddd-51c9fd3c40cd@freebsd.org> <bd0ad5d1-76ce-28b0-3813-4c11a82cd27d@freebsd.org> <c77253cd-3fca-a3a6-2f98-73ecb8c656bc@yuripv.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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

>>> 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?




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3dd60a0d-7a5e-e9f0-3018-d09b5b8ac389>