Hello Martin.

Thank you for your feedback. That message was not intended to be a commit 
message but message of context for the reviewers. I cannot use `git send-patch` 
but next time I'll copy and paste the entire output of `git format-patch` 
including the first part where I'll mention that the change is a workaround for 
`libgcc`. I can add condition that this workaround will be applied only when 
MinGW is being built with GCC and only when `libgcc` is available. How would 
you detect the scenario when `mingw-w64-crt` is being built for the future use 
with `mingw-w64-crt/winpthreads`?

Radek

________________________________________
From: Martin Storsjö <mar...@martin.st>
Sent: Wednesday, March 26, 2025 1:29 PM
To: Radek Barton via Mingw-w64-public <mingw-w64-public@lists.sourceforge.net>
Cc: Radek Barton <radek.bar...@microsoft.com>
Subject: [EXTERNAL] Re: [Mingw-w64-public] [PATCH] Add `-mno-outline-atomics` 
to `CFLAGS`` when building `mingw-w64-crt` and 
`mingw-w64-libraries/winpthreads` for `aarch64-*`
 
On Tue, 25 Mar 2025, Radek Barton via Mingw-w64-public wrote:

> As a follow up to the first patch "[PATCH] Add check if `libgcc` is available 
> and link `winpthreads` against it instead of `fakelib`" I am sending another 
> possibility how to overcome the undefined references of to outline atomics 
> LSE intrinsic functions for `aarch64-w64-mingw32` GCC build that adds 
> `-mno-outline-atomics` flag to build of `mingw-w64-crt` and 
> `mingw-w64-libraries/winpthreads`. Note that the flag is required for both 
> libraries.
>
> ---
> mingw-w64-crt/Makefile.am                    | 1 +
> mingw-w64-libraries/winpthreads/Makefile.am  | 1 +
> mingw-w64-libraries/winpthreads/configure.ac | 7 +++++++
> 3 files changed, 9 insertions(+)

I don't oppose this change.

But the commit message does need to be written so that it is
understandable on its own, not referencing the previous patch. (If
committed, the commit will be read and studied in isolation long in the
future - so it does need to explain the whole rationale of the situation.)

It also needs to clearly state that this is to work around issues with the
circular dependencies between winpthreads and libgcc. If building with
e.g. compiler-rt instead of libgcc, there's no such circular dependency.
Compiler-rt's builtins only exist in static form, and they don't depend on
any third party libraries, so there's a very clear and consistent layering
between these libraries.

With compiler-rt, there's currently no problems in building mingw-w64-crt
and winpthreads with -moutline-atomics.


Also likewise, if libgcc is configured to not use winpthreads as internal
threading library (e.g. if building with the win32 thread model, which is
quite capable these days), then winpthreads wouldn't need to use its fake
libgcc at all; one would just build winpthreads as a regular user library
after the toolchain (including the proper libgcc) has been built.


So I'm ok with applying this patch - but it's pointing out that it is
spreading a workaround that only specific configurations really need.

(If we consider a future where libgcc using winpthreads would be less
common, we should maybe consider if winpthreads should detect that kind of
configuration, somehow, and stop using the fake libgcc unless winpthreads
will be a libgcc dependency.)

// Martin


_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to