From patchwork Thu Aug 5 16:25:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fangrui Song X-Patchwork-Id: 44585 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 71D623958C3A for ; Thu, 5 Aug 2021 16:26:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 71D623958C3A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1628180815; bh=QW5zb83nbNbXCrel/mBI8WyrapRbnOimD1SQ8Fs/cfQ=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=pakYb5szDvW8AjEOhBvyGqUH3o2SvqhyM7gGQnZUiRfP43QzCgytCXunMLNg1O0+p bmJhZw4hM88EmLBiDxHQne4xjwBF0UVjbrQc8iAmWw70WB937uH7aKhMMXxu45FlBL SmYoojsPT74bexlRFx2I99IPl8llf5gukKKga6gE= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x749.google.com (mail-qk1-x749.google.com [IPv6:2607:f8b0:4864:20::749]) by sourceware.org (Postfix) with ESMTPS id 8DD233980C1D for ; Thu, 5 Aug 2021 16:26:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8DD233980C1D Received: by mail-qk1-x749.google.com with SMTP id y3-20020ae9f4030000b02903b916ae903fso4499674qkl.6 for ; Thu, 05 Aug 2021 09:26:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=QW5zb83nbNbXCrel/mBI8WyrapRbnOimD1SQ8Fs/cfQ=; b=Zpg3ZeOH51JN5h88SgeR0yrvDKO35a+/k1irQM9M6RT6E5lxeawRfsZIGl/7unKTAz 42Fb98vbtZVuQpx2apZVfIj9ZbJz1MLu+WN2EkwbgFz933P+mx80KyrSkFRbFbzxV7yx Qc/9x0TJBUx38AzIsckaObT7z6+xWuJvEKqR7qFfnNi516ch49zAIw7Z4Mx9++3vfEjQ yvxBt4D9AqaLK9fK7lFZDy+2gaFk3lwQutNC/NxuTJ1MXo6OccnBGRLtYpkvBkne9+kP S6Rid2OjbZjdhaN8ddhMxTRoWaskESyf6M7ww1nP8B0I4scM6UeQrihSEwci5jOSy9uz +yeg== X-Gm-Message-State: AOAM530LeZfqw2ZJFAzfNavgdkjcxV+APxqIeAOJtUaC2Ozz9K81q91r 7BieCC1HTTM2D3ejTPwwgR/TmWAsJvSvk8Wp070UnWwRVrlWPtie8ij+oa/9BsAASyCvG3I8Rwp kvnnuetYGZGwL2jNjNzDp8ct/QitNWmY6e/KyLm9sr5l0ltAfvS00LUAGOlpbWNHUyP/a X-Google-Smtp-Source: ABdhPJzs30qeii8qLW2VqlP6KaQCpYoE5auR+H/3UgdcTEVpq/al7VAGHL0kqVO9MQiSyCaG61n1nKdrZqyW X-Received: from maskray1.svl.corp.google.com ([2620:15c:2ce:200:6668:5d25:689f:8ff1]) (user=maskray job=sendgmr) by 2002:ad4:42a4:: with SMTP id e4mr6145097qvr.51.1628180769186; Thu, 05 Aug 2021 09:26:09 -0700 (PDT) Date: Thu, 5 Aug 2021 09:25:59 -0700 In-Reply-To: <20210805162601.1200851-1-maskray@google.com> Message-Id: <20210805162601.1200851-2-maskray@google.com> Mime-Version: 1.0 References: <20210805162601.1200851-1-maskray@google.com> Subject: [PATCH v2 1/3] elf: Replace .tls_common with .tbss definition [BZ #28152] To: libc-alpha@sourceware.org X-Spam-Status: No, score=-18.6 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, PDS_OTHER_BAD_TLD, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Fangrui Song via Libc-alpha From: Fangrui Song Reply-To: Fangrui Song Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" .tls_common is obsoleted, not supported by clang -fintegrated-as or ld.lld. Just change it to .tbss for portability. --- elf/tls-macros.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/elf/tls-macros.h b/elf/tls-macros.h index e25e33b0f0..a637407417 100644 --- a/elf/tls-macros.h +++ b/elf/tls-macros.h @@ -1,7 +1,11 @@ /* Macros to support TLS testing in times of missing compiler support. */ #define COMMON_INT_DEF(x) \ - asm (".tls_common " #x ",4,4") + asm (".section .tbss\n\t" \ + ".globl " #x "\n\t" \ + ".balign 4\n\t" \ + #x ":\t.space 4\n\t" \ + ".previous") /* XXX Until we get compiler support we don't need declarations. */ #define COMMON_INT_DECL(x) From patchwork Thu Aug 5 16:26:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fangrui Song X-Patchwork-Id: 44587 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 44CDC396900E for ; Thu, 5 Aug 2021 16:28:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 44CDC396900E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1628180913; bh=//mu8vsxRkCR/DSwqJN10zkIKx9H3M27uws6NVDKL6o=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=S3WrI0DWM6ga1OMnfyTwtRTKqkD2P4RJaCX6IlxRLHK1lX6suSAh4IV+9smx8gM86 8OSnI6RQzA2Je3//lEa2rW8hduf4Jvlxz0BjNjg4m1XC4y2DJJ5PVHu1iMCMBhsdN+ QrkpCTw6RFc3gTM0vKHRhJnUIe7wpg/wfvcFUqKs= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by sourceware.org (Postfix) with ESMTPS id EFFAB3980C36 for ; Thu, 5 Aug 2021 16:26:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EFFAB3980C36 Received: by mail-yb1-xb49.google.com with SMTP id g11-20020a25ae4b0000b02905792fb55b0bso6733905ybe.9 for ; Thu, 05 Aug 2021 09:26:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=//mu8vsxRkCR/DSwqJN10zkIKx9H3M27uws6NVDKL6o=; b=M8YmqTlCnTLit60hRhKT+47+b6xF4XBfQtVUCSxCDp8HZBya4oYDTklTZIxSqbBYvq jcURIGsFBlar0R/Y5nlEUtJrFe3eJ8PDzMFj+Px+t/XVUUIdA2nPOWV1i2XsjgPpsdus YnXCmhi1wKpKJcsRXUiVduGvU6NcyjRhrMWNZ2wh94BnSUj6Pua535xze6EUYDtWipdU CpnxwViLlM5fjXMOBron82F9nn8F2gy6Ez29LyqNQswk0Al29Pv1me+cfQkmYdRSeGFv bxIFmEPKqZSZahn+rOEs2BRR+UMtaoe3NBjZ/yJWpS+rYQdA9b8whYWic0ZF6yiKRrqC hYXg== X-Gm-Message-State: AOAM530Nmhs+S1yZfRPQ5mQPj6bUV+mjHAHCKXdszZR9juxDmqg3nPwv MswZH+hOQJO5llHoZecI2COPIkedx/PJsv+ZiR1eyWxYjsuHU/aCP7zG5DIFx4pXJ19+0/5+I0w 6atoJVFEmpTpEbwML89+GvDndE1R7IaaRDPCgvTGh3vo4no1EleJqvEVi+tjlj7sLRElO X-Google-Smtp-Source: ABdhPJwC7n2k9q752NNXVyvTLtPJZlrRHnMMRJfpS4KqZ4rRhlP3wFDHTb6iLVsj74tdMtsn23PWDHB04CKy X-Received: from maskray1.svl.corp.google.com ([2620:15c:2ce:200:6668:5d25:689f:8ff1]) (user=maskray job=sendgmr) by 2002:a25:afcd:: with SMTP id d13mr6703853ybj.504.1628180771472; Thu, 05 Aug 2021 09:26:11 -0700 (PDT) Date: Thu, 5 Aug 2021 09:26:00 -0700 In-Reply-To: <20210805162601.1200851-1-maskray@google.com> Message-Id: <20210805162601.1200851-3-maskray@google.com> Mime-Version: 1.0 References: <20210805162601.1200851-1-maskray@google.com> Subject: [PATCH v2 2/3] elf: Skip tst-auditlogmod-* if the linker doesn't support --depaudit [BZ #28151] To: libc-alpha@sourceware.org X-Spam-Status: No, score=-20.0 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Fangrui Song via Libc-alpha From: Fangrui Song Reply-To: Fangrui Song Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" gold and ld.lld do not support --audit or --depaudit. Reviewed-by: Adhemerval Zanella --- configure | 34 ++++++++++++++++++++++++++++++++++ configure.ac | 4 ++++ elf/Makefile | 4 +++- 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 9619c10991..9b966196d4 100755 --- a/configure +++ b/configure @@ -5969,6 +5969,40 @@ $as_echo "$libc_linker_feature" >&6; } config_vars="$config_vars have-z-start-stop-gc = $libc_cv_z_start_stop_gc" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports --depaudit" >&5 +$as_echo_n "checking for linker that supports --depaudit... " >&6; } +libc_linker_feature=no +if test x"$gnu_ld" = x"yes"; then + libc_linker_check=`$LD -v --help 2>/dev/null | grep "\--depaudit"` + if test -n "$libc_linker_check"; then + cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } + then + libc_linker_feature=yes + fi + rm -f conftest* + fi +fi +if test $libc_linker_feature = yes; then + libc_cv_depaudit=yes +else + libc_cv_depaudit=no +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5 +$as_echo "$libc_linker_feature" >&6; } +config_vars="$config_vars +have-depaudit = $libc_cv_depaudit" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker that supports --no-dynamic-linker" >&5 $as_echo_n "checking for linker that supports --no-dynamic-linker... " >&6; } libc_linker_feature=no diff --git a/configure.ac b/configure.ac index 34ecbba540..17a4c9a1ab 100644 --- a/configure.ac +++ b/configure.ac @@ -1337,6 +1337,10 @@ LIBC_LINKER_FEATURE([-z start-stop-gc], [-Wl,-z,start-stop-gc], [libc_cv_z_start_stop_gc=yes], [libc_cv_z_start_stop_gc=no]) LIBC_CONFIG_VAR([have-z-start-stop-gc], [$libc_cv_z_start_stop_gc]) +LIBC_LINKER_FEATURE([--depaudit], [-Wl,--depaudit,x], + [libc_cv_depaudit=yes], [libc_cv_depaudit=no]) +LIBC_CONFIG_VAR([have-depaudit], [$libc_cv_depaudit]) + LIBC_LINKER_FEATURE([--no-dynamic-linker], [-Wl,--no-dynamic-linker], [libc_cv_no_dynamic_linker=yes], diff --git a/elf/Makefile b/elf/Makefile index d05f410592..b62278ee86 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -219,7 +219,6 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \ tst-dlopen-self tst-auditmany tst-initfinilazyfail tst-dlopenfail \ tst-dlopenfail-2 \ tst-filterobj tst-filterobj-dlopen tst-auxobj tst-auxobj-dlopen \ - tst-audit14 tst-audit15 tst-audit16 tst-audit17 \ tst-single_threaded tst-single_threaded-pthread \ tst-tls-ie tst-tls-ie-dlmopen argv0test \ tst-glibc-hwcaps tst-glibc-hwcaps-prepend tst-glibc-hwcaps-mask \ @@ -238,6 +237,9 @@ selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null) ifneq ($(selinux-enabled),1) tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog endif +ifeq ($(have-depaudit),yes) +tests += tst-audit14 tst-audit15 tst-audit16 +endif endif tests += $(tests-execstack-$(have-z-execstack)) ifeq ($(run-built-tests),yes) From patchwork Thu Aug 5 16:26:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fangrui Song X-Patchwork-Id: 44588 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D51F63969013 for ; Thu, 5 Aug 2021 16:29:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D51F63969013 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1628180958; bh=+L9qpSyUCvPsBF0dC4LZozlPBmZAOrCXryWPzK+oljg=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=azlA5HBAmt76bTI2FOKYP6eIB5V5doopTnID27uWS1DSlKhXpAX7ZQV20kov6I/go XiIDKk+6uXo7x0H6h6rcTEFCU+U0CJ0ooub6RyIWOgn9yPJtOoFi5KgIjwrGXC6v97 u1JN0wa9Y0yYb01xURs4bz6iaW/zunrUZa74NBek= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf4a.google.com (mail-qv1-xf4a.google.com [IPv6:2607:f8b0:4864:20::f4a]) by sourceware.org (Postfix) with ESMTPS id 5216A3980C12 for ; Thu, 5 Aug 2021 16:26:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5216A3980C12 Received: by mail-qv1-xf4a.google.com with SMTP id a2-20020a0562141302b02903303839b843so4187392qvv.13 for ; Thu, 05 Aug 2021 09:26:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=+L9qpSyUCvPsBF0dC4LZozlPBmZAOrCXryWPzK+oljg=; b=m3e4Ia3KREqpVlXLqVqqALNyG4+AnVqd2JkPdSVcQ0i8s+dK2DpXUmTNhumu+3Hjt+ oigB16dhnpQDZD+Nl5MQKUtwMDyZOTWlY4FA5IFsXWP+N1KkgaG3G1zS4lHN7yadbs3K UvwVQccHJMlENqNytx4V41UeIMh9MBcV2l2/NIK8b3Rr3fiPW9QKMMWgbcT8nnnb5O8C gpoc6CvOmS5E7OnGRmewNc+u2w8vQdNLGJpAG/8qQc+N49CL6d7eDGm2SvBZE/T6CjRF DZhkcr5N+XtgUxmpJvshkwj5FCftau+9yiDpZ9EUh80KceuyqtkPI1QKU7vFFWxB1feM rOWQ== X-Gm-Message-State: AOAM531Ek3MtjlsZi3da+ZMQ3w2a+4r2g6c/Xy1PNSloU99fKVO3KD7j wLvOXtJuoj++z/wCX2Fqa0uqLyB3+mpwj7RPT1PW0oKQM09L0rdDtfAkKB6qLYbPWxDIAqgV7gR 1sYKPbGr6vAKoiTBjx/2uM7do2KnJMEF/HiCc/dzMV04BF4BDGwEH8672sq1iurS/+3kj X-Google-Smtp-Source: ABdhPJxrqPTBEbKhtjUiz96hm3cwo698ybaplnXRV+m0j7ld9tJv3uADmTHkYBGWARnkQh3KyAe5MmZ766E+ X-Received: from maskray1.svl.corp.google.com ([2620:15c:2ce:200:6668:5d25:689f:8ff1]) (user=maskray job=sendgmr) by 2002:ad4:5de1:: with SMTP id jn1mr6093420qvb.62.1628180773875; Thu, 05 Aug 2021 09:26:13 -0700 (PDT) Date: Thu, 5 Aug 2021 09:26:01 -0700 In-Reply-To: <20210805162601.1200851-1-maskray@google.com> Message-Id: <20210805162601.1200851-4-maskray@google.com> Mime-Version: 1.0 References: <20210805162601.1200851-1-maskray@google.com> Subject: [PATCH v2 3/3] configure: Allow LD to be LLD 13.0.0 or above [BZ #26558] To: libc-alpha@sourceware.org X-Spam-Status: No, score=-18.8 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLACK, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Fangrui Song via Libc-alpha From: Fangrui Song Reply-To: Fangrui Song Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" When using LLD (LLVM linker) as the linker, configure prints a confusing message. *** These critical programs are missing or too old: GNU ld LLD>=13.0.0 can build glibc --enable-static-pie. (8.0.0 needs one workaround for -Wl,-defsym=_begin=0. 9.0.0 works with --disable-static-pie). With BZ #28153 (glibc bug exposed by testing with LLD) fixed, `make check` only has 2 more failures with LLD than with GNU ld: BZ #28154 (LLD follows the PowerPC port of GNU ld for ifunc by placing IRELATIVE relocations in .rela.dyn). The set of dynamic symbols is the same with GNU ld and LLD, modulo unused SHN_ABS version node symbols. For comparison, gold does not support --enable-static-pie yet (--no-dynamic-linker is unsupported BZ #22221), yet has 6 failures more than LLD. gold linked libc.so has larger .dynsym differences with GNU ld and LLD (ISTM non-default version symbols are changed to default versions by a version script). --- I identified the lack of support of * version script on non-default version symbols * copy relocations on non-default version symbols in an earlier snapshot of LLD 13.0.0 and fixed them. The functionality of the LLD linked libc.so and ld.so looks pretty good. --- configure | 77 +++++++++++++++++++++++++++++++++++++++++++++++++--- configure.ac | 20 ++++++++++---- 2 files changed, 88 insertions(+), 9 deletions(-) diff --git a/configure b/configure index 9b966196d4..050f1a29cf 100755 --- a/configure +++ b/configure @@ -4664,9 +4664,10 @@ if test $ac_verc_fail = yes; then fi -if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then +case $($LD --version) in + "GNU gold"*) # Accept gold 1.14 or higher - for ac_prog in $LD + for ac_prog in $LD do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4729,8 +4730,75 @@ if test $ac_verc_fail = yes; then LD=: critic_missing="$critic_missing GNU gold" fi + ;; + "LLD"*) + # Accept LLD 13.0.0 or higher + for ac_prog in $LD +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LD+:} false; then : + $as_echo_n "(cached) " >&6 else - for ac_prog in $LD + if test -n "$LD"; then + ac_cv_prog_LD="$LD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LD="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LD=$ac_cv_prog_LD +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LD" && break +done + +if test -z "$LD"; then + ac_verc_fail=yes +else + # Found it, now check the version. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5 +$as_echo_n "checking version of $LD... " >&6; } + ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*LLD.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1[3-9].*|[2-9][0-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 +$as_echo "$ac_prog_version" >&6; } +fi +if test $ac_verc_fail = yes; then + LD=: critic_missing="$critic_missing LLD" +fi + + ;; + *) + for ac_prog in $LD do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -4793,7 +4861,8 @@ if test $ac_verc_fail = yes; then LD=: critic_missing="$critic_missing GNU ld" fi -fi + ;; +esac # These programs are version sensitive. for ac_prog in gnumake gmake make diff --git a/configure.ac b/configure.ac index 17a4c9a1ab..5632277f9c 100644 --- a/configure.ac +++ b/configure.ac @@ -995,18 +995,28 @@ AC_CHECK_PROG_VER(AS, $AS, --version, [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as") -if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then +case $($LD --version) in + "GNU gold"*) # Accept gold 1.14 or higher - AC_CHECK_PROG_VER(LD, $LD, --version, + AC_CHECK_PROG_VER(LD, $LD, --version, [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)], [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing GNU gold") -else - AC_CHECK_PROG_VER(LD, $LD, --version, + ;; + "LLD"*) + # Accept LLD 13.0.0 or higher + AC_CHECK_PROG_VER(LD, $LD, --version, + [LLD.* \([0-9][0-9]*\.[0-9.]*\)], + [1[3-9].*|[2-9][0-9].*], + LD=: critic_missing="$critic_missing LLD") + ;; + *) + AC_CHECK_PROG_VER(LD, $LD, --version, [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing GNU ld") -fi + ;; +esac # These programs are version sensitive. AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,