From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id 785793858014 for ; Tue, 2 Nov 2021 20:17:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 785793858014 Received: by mail-pf1-x42d.google.com with SMTP id k2so76251pff.11 for ; Tue, 02 Nov 2021 13:17:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=M71s7uFWqWc/6O+UKNXuxIqMZCxHklPzMdVZNNk01tw=; b=imLrH9NyC+tjJOsSVnSOvqx03nS8H3qO8NQFE4z1pldxizRbSKGECsHj2RekriAYr5 9P28KVSl9NsaFc75EIJ/OltkU2aVvuEPMskt/cF4lDN/sUmjmcVM5iqZ+Zru1WfOsryF QNVicoUabcJejWP+D158QH6uMBi/YklpOnsW68zGzB91KBlL/gRnOqygjmFk8oBGn58Z wO+84M0Qg9IYCAJX+f/eHIFedg3W7NLhfolce2ZvfLMFSsWSiGiUtadFL9b07B/PHJaF FMVAnbcEASWUfd/h7CGQ8jQ6tGlwDtjVoag+QXBWKgRsm+yOfyDUUG5U74cFxQrwcklc u3Ew== X-Gm-Message-State: AOAM5311ZCvEOxLaJohU+Iy/17pl9tyCzs/r4xW+T8469pgfn1GepaOY jPaJnl1FnThn+r248BBrUbVTPUN/Je067gUPCaE= X-Google-Smtp-Source: ABdhPJw9nLyPIgrrToNdYURZl+LzjZo5dMxdY4JZTnpsKhSX4HaYb2SS+Tvg0UMTRjqYgCDmXAMZfisakYmpAOvRmV8= X-Received: by 2002:a63:8042:: with SMTP id j63mr14538837pgd.225.1635884247450; Tue, 02 Nov 2021 13:17:27 -0700 (PDT) MIME-Version: 1.0 References: <20211102195720.1979908-1-adhemerval.zanella@linaro.org> In-Reply-To: <20211102195720.1979908-1-adhemerval.zanella@linaro.org> From: "H.J. Lu" Date: Tue, 2 Nov 2021 13:16:51 -0700 Message-ID: Subject: Re: [PATCH] riscv: Build with -mno-relax if linker does not support R_RISCV_ALIGN To: Adhemerval Zanella Cc: GNU C Library , Fangrui Song Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3029.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP 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-List-Received-Date: Tue, 02 Nov 2021 20:17:31 -0000 On Tue, Nov 2, 2021 at 12:57 PM Adhemerval Zanella wrote: > > It allows build both glibc and tests with lld (Since lld does not > support R_RISCV_ALIGN linker relaxation). > > Checked with a build for riscv32-linux-gnu-rv32imafdc-ilp32d and > riscv64-linux-gnu-rv64imafdc-lp64d. > --- > sysdeps/riscv/Makefile | 6 ++++++ > sysdeps/riscv/configure | 30 ++++++++++++++++++++++++++++++ > sysdeps/riscv/configure.ac | 16 ++++++++++++++++ > 3 files changed, 52 insertions(+) > > diff --git a/sysdeps/riscv/Makefile b/sysdeps/riscv/Makefile > index 20a9968106..8fb10b164f 100644 > --- a/sysdeps/riscv/Makefile > +++ b/sysdeps/riscv/Makefile > @@ -5,3 +5,9 @@ endif > # RISC-V's assembler also needs to know about PIC as it changes the definition > # of some assembler macros. > ASFLAGS-.os += $(pic-ccflag) > + > +ifeq (no,$(riscv-r-align)) > +ASFLAGS-.os += -Wa,-mno-relax > +ASFLAGS-.o += -Wa,-mno-relax > +sysdep-CFLAGS += -mno-relax > +endif > diff --git a/sysdeps/riscv/configure b/sysdeps/riscv/configure > index 53f5f1b5f1..4a56fca94b 100644 > --- a/sysdeps/riscv/configure > +++ b/sysdeps/riscv/configure > @@ -2,3 +2,33 @@ > # Local configure fragment for sysdeps/riscv/elf. > > $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h > + > + > +# Check if static linker supports R_RISCV_ALIGN > +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for R_RISCV_ALIGN linker relaxation support" >&5 > +$as_echo_n "checking for R_RISCV_ALIGN linker relaxation support... " >&6; } > +if ${libc_cv_riscv_r_align+:} false; then : > + $as_echo_n "(cached) " >&6 > +else > + cat > conftest.S < +.align 3 > +foo: > + li a0,42 > + ret > +EOF > + libc_cv_riscv_r_align=no > + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles $no_ssp -shared -fPIC -o contests.o conftest.S' > + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 > + (eval $ac_try) 2>&5 > + ac_status=$? > + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 > + test $ac_status = 0; }; } > + then > + libc_cv_riscv_r_align=yes > + fi > + rm -rf conftest.* > +fi > +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_riscv_r_align" >&5 > +$as_echo "$libc_cv_riscv_r_align" >&6; } > +config_vars="$config_vars > +riscv-r-align = $libc_cv_riscv_r_align" > diff --git a/sysdeps/riscv/configure.ac b/sysdeps/riscv/configure.ac > index 34f62d4b4b..44a5279903 100644 > --- a/sysdeps/riscv/configure.ac > +++ b/sysdeps/riscv/configure.ac > @@ -2,3 +2,19 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. > # Local configure fragment for sysdeps/riscv/elf. > > AC_DEFINE(PI_STATIC_AND_HIDDEN) > + > +# Check if static linker supports R_RISCV_ALIGN > +AC_CACHE_CHECK([for R_RISCV_ALIGN linker relaxation support], [libc_cv_riscv_r_align],[dnl > + cat > conftest.S < +.align 3 > +foo: > + li a0,42 > + ret > +EOF > + libc_cv_riscv_r_align=no > + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles $no_ssp -shared -fPIC -o contests.o conftest.S]) > + then > + libc_cv_riscv_r_align=yes > + fi > + rm -rf conftest.*]) > +LIBC_CONFIG_VAR([riscv-r-align], [$libc_cv_riscv_r_align]) > -- > 2.32.0 > LGTM. Reviewed-by: H.J. Lu Thanks. -- H.J.