[cfe-dev] How clang from packages is build?

Hans Wennborg via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 22 10:29:27 PDT 2016


In Chromium we only build the gold plugin with LTO though, not Clang
itself. IIRC (but my memory is hazy), we ran into problems when we
tried that?

On Thu, Sep 22, 2016 at 10:21 AM, Ivan Krasin <krasin at google.com> wrote:
> Hi Mehdi,
>
> yes, on Linux we do 2-stage build exactly for this reason.
> For the reference, the code is
> https://cs.chromium.org/chromium/src/tools/clang/scripts/update.py?q=update.py&sq=package:chromium&dr=C&l=564
> and we don't make use of LLVM_ENABLE_LTO at the moment (no good reason I can
> think of)
>
> krasin
>
> On Thu, Sep 22, 2016 at 9:26 AM, Mehdi Amini <mehdi.amini at apple.com> wrote:
>>
>>
>> On Sep 22, 2016, at 9:19 AM, Hans Wennborg <hans at chromium.org> wrote:
>>
>> On Thu, Sep 22, 2016 at 9:09 AM, Mehdi Amini <mehdi.amini at apple.com>
>> wrote:
>>
>>
>> On Sep 22, 2016, at 8:58 AM, Hans Wennborg <hans at chromium.org> wrote:
>>
>> On Thu, Sep 22, 2016 at 12:51 AM, Sylvestre Ledru via cfe-dev
>> <cfe-dev at lists.llvm.org> wrote:
>>
>> Le 22/09/2016 à 03:33, Mehdi Amini a écrit :
>>
>> Hi,
>>
>> I was wondering the same thing recently and Hans pointed me to
>> llvm/utils/release.
>>
>> It turns out we’re not using LTO :(
>> (Neither PGO…)
>>
>> In the Debian/Ubuntu packages (and this is general to packaging), we are:
>> * relying on the build system of the application itself
>> * adding some flags like "-g -O2" and the fortify options
>> https://wiki.debian.org/Hardening
>>
>> For the linker, for the LLVM toolchain, it depends if the version of
>> binutils in the distro has it or not (at least 2.23.1-1~exp3).
>> Here, for the Debian & Ubuntu packages, I am using binutils gold but not
>> sure the LTO option is set to the llvm build system?!
>>
>> However, happy to try that (I think this should be part of the build
>> system,
>> at least for LTO).
>>
>>
>> I think that's what the -LLVM_ENABLE_LTO={Full,Thin} option is for,
>> but it's not enabled by default.
>>
>>
>> So, what about changing this?
>>
>>
>> I don't know how practical it would be at the moment. Would most build
>> environments support it? It seems to assume Clang is being built by
>> Clang, and that the gold plugin (which I think requires the binutils
>> headers to build) is around.
>>
>>
>> Aren’t you doing a 2-stage build? In which case the stage-2 always has
>> clang available.
>> It requires Gold on linux probably, but on OSX the system linker supports
>> LTO.
>>
>> At minima the OSX build could have it enabled without risk of failure.
>>
>>>> Mehdi
>>
>>
>



More information about the cfe-dev mailing list