On Fri, Sep 16, 2016 at 10:54 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:> Can you look for the specific errors in the CMake log and error files? > > CMake is very good at not presenting the real issue… > Here it is trying to build very simple programs to check features > availability. Like: > > #include <strings.h> > int main() { ffs(0); return 0; }In CMakeError.log there are errors like: CheckIncludeFile.c:1:10: fatal error: 'malloc/malloc.h' file not found #include <malloc/malloc.h> ... CheckIncludeFile.c:1:10: fatal error: 'ndir.h' file not found #include <ndir.h> ... CheckIncludeFile.c:1:10: fatal error: 'sys/ndir.h' file not found #include <sys/ndir.h> ... fatal error: 'intrin.h' file not found These seem like tests that are expected to fail. ... The interesting test int main() { __builtin_ffs(0); return 0; } fails like this: /usr/bin/ld[...]llvm/bin/../lib/LLVMgold.so: cannot open shared object file: No such file[...] I have two questions here: Is there anything I might have missed when configuring the gcc-built llvm install for it to be incomplete in the linker department? I mean, the system linker is used (not lld) and that via CC=clang is looking for the gold linker plugin, which seems to be missing. Probably something got lost in my transition from autoconf to cmake? Anything else to pass to cmake so that it, in addition to llvm-ar and llvm-ranlib, also used lld? Or isn't that a requirement for building with ThinLTO?
> On Sep 16, 2016, at 2:18 PM, Carsten Mattner <carstenmattner at gmail.com> wrote: > > On Fri, Sep 16, 2016 at 10:54 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: > >> Can you look for the specific errors in the CMake log and error files? >> >> CMake is very good at not presenting the real issue… >> Here it is trying to build very simple programs to check features >> availability. Like: >> >> #include <strings.h> >> int main() { ffs(0); return 0; } > > In CMakeError.log there are errors like: > > CheckIncludeFile.c:1:10: fatal error: 'malloc/malloc.h' file not found > #include <malloc/malloc.h> > > ... > > CheckIncludeFile.c:1:10: fatal error: 'ndir.h' file not found > #include <ndir.h> > > ... > > CheckIncludeFile.c:1:10: fatal error: 'sys/ndir.h' file not found > #include <sys/ndir.h> > > ... > > fatal error: 'intrin.h' file not found > > These seem like tests that are expected to fail. > > ... > > The interesting test > > int main() { __builtin_ffs(0); return 0; } > > fails like this: > > /usr/bin/ld[...]llvm/bin/../lib/LLVMgold.so: > cannot open shared object file: No such file[…]I assume that "/usr/bin/ld[...]llvm/bin” is the path where clang is installed right? It seems that when you built the stage1 clang, it didn’t find Gold installed, and then didn’t build the plugin. So you need to go back to the first build (not the ThinLTO one, the one with the system compiler), and make sure that CMake finds gold.> > I have two questions here: > > Is there anything I might have missed when configuring the gcc-built > llvm install for it to be incomplete in the linker department? I mean, > the system linker is used (not lld) and that via CC=clang is looking > for the gold linker plugin, which seems to be missing. Probably > something got lost in my transition from autoconf to cmake? > > Anything else to pass to cmake so that it, in addition to llvm-ar and > llvm-ranlib, also used lld? Or isn't that a requirement for building > with ThinLTO?No requirement for lld. — Mehdi
> On Sep 16, 2016, at 2:27 PM, Mehdi Amini via llvm-dev <llvm-dev at lists.llvm.org> wrote: > >> >> On Sep 16, 2016, at 2:18 PM, Carsten Mattner <carstenmattner at gmail.com> wrote: >> >> On Fri, Sep 16, 2016 at 10:54 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: >> >>> Can you look for the specific errors in the CMake log and error files? >>> >>> CMake is very good at not presenting the real issue… >>> Here it is trying to build very simple programs to check features >>> availability. Like: >>> >>> #include <strings.h> >>> int main() { ffs(0); return 0; } >> >> In CMakeError.log there are errors like: >> >> CheckIncludeFile.c:1:10: fatal error: 'malloc/malloc.h' file not found >> #include <malloc/malloc.h> >> >> ... >> >> CheckIncludeFile.c:1:10: fatal error: 'ndir.h' file not found >> #include <ndir.h> >> >> ... >> >> CheckIncludeFile.c:1:10: fatal error: 'sys/ndir.h' file not found >> #include <sys/ndir.h> >> >> ... >> >> fatal error: 'intrin.h' file not found >> >> These seem like tests that are expected to fail. >> >> ... >> >> The interesting test >> >> int main() { __builtin_ffs(0); return 0; } >> >> fails like this: >> >> /usr/bin/ld[...]llvm/bin/../lib/LLVMgold.so: >> cannot open shared object file: No such file[…] > > > I assume that "/usr/bin/ld[...]llvm/bin” is the path where clang is installed right? > It seems that when you built the stage1 clang, it didn’t find Gold installed, and then didn’t build the plugin. > So you need to go back to the first build (not the ThinLTO one, the one with the system compiler), and make sure that CMake finds gold.You probably missed -DLLVM_BINUTILS_INCDIR. See: http://llvm.org/docs/GoldPlugin.html — Mehdi> > >> >> I have two questions here: >> >> Is there anything I might have missed when configuring the gcc-built >> llvm install for it to be incomplete in the linker department? I mean, >> the system linker is used (not lld) and that via CC=clang is looking >> for the gold linker plugin, which seems to be missing. Probably >> something got lost in my transition from autoconf to cmake? >> >> Anything else to pass to cmake so that it, in addition to llvm-ar and >> llvm-ranlib, also used lld? Or isn't that a requirement for building >> with ThinLTO? > > No requirement for lld. > > > — > Mehdi > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160916/3067fd1a/attachment.html>
On Fri, Sep 16, 2016 at 11:27 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:> > I assume that "/usr/bin/ld[...]llvm/bin” is the path where clang is installed right?Correct.> It seems that when you built the stage1 clang, it didn’t find Gold installed, > and then didn’t build the plugin. > So you need to go back to the first build (not the ThinLTO one, the one with > the system compiler), and make sure that CMake finds gold.Going to re-bootstrap since the cmake transition somehow dropped that here.
I am the author of Polly's/ISL's platform tests and could reproduce the problem on my system with this error message: /usr/bin/ld: /usr/lib/llvm-3.8/bin/../lib/LLVMgold.so: error loading plugin: /usr/lib/llvm-3.8/bin/../lib/LLVMgold.so: cannot open shared object file: No such file or directory Sure, that file doesn't exist. I'd expect Ubuntu 16.04 to have installed it for the installed version of clang, but `apt-file seach LLVMgold` returns: llvm-3.5-dev: /usr/lib/llvm-3.5/lib/LLVMgold.so llvm-3.6-dev: /usr/lib/llvm-3.6/lib/LLVMgold.so llvm-3.7-dev: /usr/lib/llvm-3.7/lib/LLVMgold.so llvm-dev: /usr/lib/LLVMgold.so /usr/lib/LLVMgold.so is a symlink to llvm-3.8/lib/LLVMgold.so, which doesn't exist. This looks like a mistake in the llvm-3.8-dev package. This bug might be related: https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-snapshot/+bug/1254970 The tests use CMake's standard mechanism check_c{xx}_source_compiles() to check whether a source file compiles and links. I assume it is just the first project in the configure chain to make use of it. Michael 2016-09-16 23:18 GMT+02:00 Carsten Mattner via llvm-dev <llvm-dev at lists.llvm.org>:> On Fri, Sep 16, 2016 at 10:54 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: > >> Can you look for the specific errors in the CMake log and error files? >> >> CMake is very good at not presenting the real issue… >> Here it is trying to build very simple programs to check features >> availability. Like: >> >> #include <strings.h> >> int main() { ffs(0); return 0; } > > In CMakeError.log there are errors like: > > CheckIncludeFile.c:1:10: fatal error: 'malloc/malloc.h' file not found > #include <malloc/malloc.h> > > ... > > CheckIncludeFile.c:1:10: fatal error: 'ndir.h' file not found > #include <ndir.h> > > ... > > CheckIncludeFile.c:1:10: fatal error: 'sys/ndir.h' file not found > #include <sys/ndir.h> > > ... > > fatal error: 'intrin.h' file not found > > These seem like tests that are expected to fail. > > ... > > The interesting test > > int main() { __builtin_ffs(0); return 0; } > > fails like this: > > /usr/bin/ld[...]llvm/bin/../lib/LLVMgold.so: > cannot open shared object file: No such file[...] > > I have two questions here: > > Is there anything I might have missed when configuring the gcc-built > llvm install for it to be incomplete in the linker department? I mean, > the system linker is used (not lld) and that via CC=clang is looking > for the gold linker plugin, which seems to be missing. Probably > something got lost in my transition from autoconf to cmake? > > Anything else to pass to cmake so that it, in addition to llvm-ar and > llvm-ranlib, also used lld? Or isn't that a requirement for building > with ThinLTO? > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
The configuration we’re mentioning is a 2-stage bootstrap: You need first to build without LTO your own clang, and then use it for the LTO build. — Mehid> On Sep 20, 2016, at 10:17 AM, Michael Kruse <llvmdev at meinersbur.de> wrote: > > I am the author of Polly's/ISL's platform tests and could reproduce > the problem on my system with this error message: > > /usr/bin/ld: /usr/lib/llvm-3.8/bin/../lib/LLVMgold.so: error loading > plugin: /usr/lib/llvm-3.8/bin/../lib/LLVMgold.so: cannot open shared > object file: No such file or directory > > Sure, that file doesn't exist. I'd expect Ubuntu 16.04 to have > installed it for the installed version of clang, but `apt-file seach > LLVMgold` returns: > > llvm-3.5-dev: /usr/lib/llvm-3.5/lib/LLVMgold.so > llvm-3.6-dev: /usr/lib/llvm-3.6/lib/LLVMgold.so > llvm-3.7-dev: /usr/lib/llvm-3.7/lib/LLVMgold.so > llvm-dev: /usr/lib/LLVMgold.so > > /usr/lib/LLVMgold.so is a symlink to llvm-3.8/lib/LLVMgold.so, which > doesn't exist. This looks like a mistake in the llvm-3.8-dev package. > This bug might be related: > > https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-snapshot/+bug/1254970 > > The tests use CMake's standard mechanism check_c{xx}_source_compiles() > to check whether a source file compiles and links. I assume it is just > the first project in the configure chain to make use of it. > > Michael > > > 2016-09-16 23:18 GMT+02:00 Carsten Mattner via llvm-dev > <llvm-dev at lists.llvm.org>: >> On Fri, Sep 16, 2016 at 10:54 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: >> >>> Can you look for the specific errors in the CMake log and error files? >>> >>> CMake is very good at not presenting the real issue… >>> Here it is trying to build very simple programs to check features >>> availability. Like: >>> >>> #include <strings.h> >>> int main() { ffs(0); return 0; } >> >> In CMakeError.log there are errors like: >> >> CheckIncludeFile.c:1:10: fatal error: 'malloc/malloc.h' file not found >> #include <malloc/malloc.h> >> >> ... >> >> CheckIncludeFile.c:1:10: fatal error: 'ndir.h' file not found >> #include <ndir.h> >> >> ... >> >> CheckIncludeFile.c:1:10: fatal error: 'sys/ndir.h' file not found >> #include <sys/ndir.h> >> >> ... >> >> fatal error: 'intrin.h' file not found >> >> These seem like tests that are expected to fail. >> >> ... >> >> The interesting test >> >> int main() { __builtin_ffs(0); return 0; } >> >> fails like this: >> >> /usr/bin/ld[...]llvm/bin/../lib/LLVMgold.so: >> cannot open shared object file: No such file[...] >> >> I have two questions here: >> >> Is there anything I might have missed when configuring the gcc-built >> llvm install for it to be incomplete in the linker department? I mean, >> the system linker is used (not lld) and that via CC=clang is looking >> for the gold linker plugin, which seems to be missing. Probably >> something got lost in my transition from autoconf to cmake? >> >> Anything else to pass to cmake so that it, in addition to llvm-ar and >> llvm-ranlib, also used lld? Or isn't that a requirement for building >> with ThinLTO? >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev