[PATCH] meson: Remove --warn-common ldflag

Akihiko Odaki posted 1 patch 8 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240304-common-v1-1-1a2005d1f350@daynix.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>
meson.build | 5 -----
1 file changed, 5 deletions(-)
[PATCH] meson: Remove --warn-common ldflag
Posted by Akihiko Odaki 8 months, 3 weeks ago
--warn-common ldflag causes warnings for multiple definitions of
___asan_globals_registered when enabling AddressSanitizer with clang.
The warning is somewhat obsolete so just remove it.

The common block is used to allow duplicate definitions of uninitialized
global variables. In the past, GCC and clang used to place such
variables in a common block by default, which prevented programmers for
noticing accidental duplicate definitions. Commit 49237acdb725 ("Enable
ld flag --warn-common") added --warn-common ldflag so that ld warns in
such a case.

Today, both of GCC and clang don't use common blocks by default[1][2] so
any remaining use of common blocks should be intentional. Remove
--warn-common ldflag to suppress warnings for intentional use of
common blocks.

[1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678
[2]: https://reviews.llvm.org/D75056

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
 meson.build | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/meson.build b/meson.build
index c1dc83e4c007..4bbd921e9fbd 100644
--- a/meson.build
+++ b/meson.build
@@ -476,11 +476,6 @@ if host_os == 'windows'
   qemu_ldflags += cc.get_supported_link_arguments('-Wl,--dynamicbase', '-Wl,--high-entropy-va')
 endif
 
-# Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
-if host_os != 'sunos' and not get_option('tsan')
-  qemu_ldflags += cc.get_supported_link_arguments('-Wl,--warn-common')
-endif
-
 if get_option('fuzzing')
   # Specify a filter to only instrument code that is directly related to
   # virtual-devices.

---
base-commit: 5005aed8a7e728d028efb40e243ecfc2b4f3df3a
change-id: 20240304-common-a51dd155f814

Best regards,
-- 
Akihiko Odaki <akihiko.odaki@daynix.com>
Re: [PATCH] meson: Remove --warn-common ldflag
Posted by Peter Maydell 8 months, 3 weeks ago
On Sun, 3 Mar 2024 at 16:26, Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>
> --warn-common ldflag causes warnings for multiple definitions of
> ___asan_globals_registered when enabling AddressSanitizer with clang.
> The warning is somewhat obsolete so just remove it.
>
> The common block is used to allow duplicate definitions of uninitialized
> global variables. In the past, GCC and clang used to place such
> variables in a common block by default, which prevented programmers for
> noticing accidental duplicate definitions. Commit 49237acdb725 ("Enable
> ld flag --warn-common") added --warn-common ldflag so that ld warns in
> such a case.
>
> Today, both of GCC and clang don't use common blocks by default[1][2] so
> any remaining use of common blocks should be intentional. Remove
> --warn-common ldflag to suppress warnings for intentional use of
> common blocks.

We also explicitly turn off the common block with -fno-common
(since commit 4c288acbd6b9e, 2014).

thanks
-- PMM
Re: [PATCH] meson: Remove --warn-common ldflag
Posted by Paolo Bonzini 8 months, 3 weeks ago
Queued, thanks.

Paolo