https://blogs.gentoo.org/ago/2020/07/04/gentoo-tinderbox/ Issue: sys-auth/pam_skey fails to compile. Discovered on: amd64 (internal ref: tinderbox) NOTE: This machine uses a clang/LLVM toolchain. If you think that this issue is strictly related to clang/LLVM please block bug 408963. If you think that this issue isstrictly related to the LLD linker, please block bug 731004.
Created attachment 648808 [details] build.log build log and emerge --info
Created attachment 648812 [details] other.tar.bz2 other logs
The problem is in configure: checking for the ld -shared flag... no
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/dev/ulm.git/commit/?id=3f79558a92d59bc8e691c04ea001eaaa94148a1d commit 3f79558a92d59bc8e691c04ea001eaaa94148a1d Author: Ulrich Müller <ulm@gentoo.org> AuthorDate: 2020-07-10 13:38:28 +0000 Commit: Ulrich Müller <ulm@gentoo.org> CommitDate: 2020-07-10 13:38:28 +0000 pam_skey: Fix configure test for ld -shared. Bug: https://bugs.gentoo.org/732098 Signed-off-by: Ulrich Müller <ulm@gentoo.org> patchsets/pam_skey/1.1.5/06_all_ld-shared.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7d197240b806daa3898e8a32fa9dd58ccaa999a7 commit 7d197240b806daa3898e8a32fa9dd58ccaa999a7 Author: Ulrich Müller <ulm@gentoo.org> AuthorDate: 2020-07-10 13:49:02 +0000 Commit: Ulrich Müller <ulm@gentoo.org> CommitDate: 2020-07-10 13:49:26 +0000 sys-auth/pam_skey: Fix configure test for ld -shared. Closes: https://bugs.gentoo.org/732098 Package-Manager: Portage-2.3.103, Repoman-2.3.23 Signed-off-by: Ulrich Müller <ulm@gentoo.org> sys-auth/pam_skey/Manifest | 2 +- sys-auth/pam_skey/pam_skey-1.1.5-r6.ebuild | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
To clarify why I have labelled this as a clang issue: configure.ac contains the following snippet: AC_MSG_CHECKING(for the ld -shared flag) LDFLAGS="${LDFLAGS} -shared" AC_TRY_LINK([#include <stdio.h>], [void blahblah(){fprintf(stderr, "");}], found=yes, found=no) It is translated to this program ... #include <stdio.h> int main () { void blahblah(){fprintf(stderr, "");} ; return 0; } ... which contains nested function definitions. These are allowed in gcc: https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html Apparently clang has a problem with that construct. (Presumably it needs an extra option to enable support, but it looked simpler to remove the nesting instead.)