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

Sylvestre Ledru via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 22 11:27:09 PDT 2016


I just tried and, with gcc 6.1 and GNU gold (GNU Binutils for Debian 2.26.1) 1.11

I am getting:
lto1: internal compiler error: in lhd_decl_printable_name, at langhooks.c:222
0x7fb47a lhd_decl_printable_name(tree_node*, int)
	../../src/gcc/langhooks.c:222
0x69a45e gen_namespace_die
[...]

Sylvestre


Le 22/09/2016 à 19:37, Ivan Krasin a écrit :
> I don't recall any specific problems, but yeah, could be that there're some.
> 
> On Thu, Sep 22, 2016 at 10:29 AM, Hans Wennborg <hans at chromium.org <mailto:hans at chromium.org>> wrote:
> 
>     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 <mailto: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 <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 <mailto:mehdi.amini at apple.com>> wrote:
>     >>
>     >>
>     >> On Sep 22, 2016, at 9:19 AM, Hans Wennborg <hans at chromium.org <mailto:hans at chromium.org>> wrote:
>     >>
>     >> On Thu, Sep 22, 2016 at 9:09 AM, Mehdi Amini <mehdi.amini at apple.com <mailto:mehdi.amini at apple.com>>
>     >> wrote:
>     >>
>     >>
>     >> On Sep 22, 2016, at 8:58 AM, Hans Wennborg <hans at chromium.org <mailto: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 <mailto: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 <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