[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] configure: Replace -Wl,-r,-d with -Wl,-r
From: |
Daniel Kiper |
Subject: |
Re: [PATCH] configure: Replace -Wl,-r,-d with -Wl,-r |
Date: |
Fri, 11 Feb 2022 15:03:31 +0100 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
On Tue, Feb 08, 2022 at 03:25:27PM -0800, Fangrui Song via Grub-devel wrote:
> In GNU ld and ld.lld, -d is used with -r to allocate space to COMMON symbols.
> This behavior is presumably to work around legacy projects which inspect
> relocatable output by themselves and do not handle COMMON symbols. grub does
> not do this.
>
> See https://github.com/llvm/llvm-project/issues/53660
> -d is quite useless and ld.lld may remove -d or make it a no-op for the
> 15.0.0 release.
> ---
> acinclude.m4 | 2 +-
> conf/Makefile.common | 2 +-
> grub-core/Makefile.core.def | 20 ++++++++++----------
> grub-core/genmod.sh.in | 4 ++--
> 4 files changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/acinclude.m4 b/acinclude.m4
> index 6e14bb553..fa7840f09 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -430,7 +430,7 @@ link_nopie_needed=no]
> AC_MSG_CHECKING([whether linker needs disabling of PIE to work])
> AC_LANG_CONFTEST([AC_LANG_SOURCE([[]])])
>
> -[if eval "$ac_compile -Wl,-r,-d -nostdlib -Werror -o conftest.o" 2>
> /dev/null; then]
> +[if eval "$ac_compile -Wl,-r -nostdlib -Werror -o conftest.o" 2> /dev/null;
> then]
It looks that these changes do not break any builds. So, I am OK with
them. Though should not we add -fno-common to the CFLAGS too, e.g.:
diff --git a/configure.ac b/configure.ac
index 5c01af0fa..d1eaafee1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -85,9 +85,9 @@ fi
# Enable support for "restrict" keyword and other
# features from gnu99 C language standard.
-BUILD_CFLAGS="-std=gnu99 $BUILD_CFLAGS"
-HOST_CFLAGS="-std=gnu99 $HOST_CFLAGS"
-TARGET_CFLAGS="-std=gnu99 $TARGET_CFLAGS"
+BUILD_CFLAGS="-std=gnu99 -fno-common $BUILD_CFLAGS"
+HOST_CFLAGS="-std=gnu99 -fno-common $HOST_CFLAGS"
+TARGET_CFLAGS="-std=gnu99 -fno-common $TARGET_CFLAGS"
# Default HOST_CPPFLAGS
HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
Daniel