On Mon, 27 Apr 2020 at 23:20, Joshua Watt <[email protected]> wrote:
>
>
> On 4/27/20 12:35 PM, Samuli Piippo wrote:
>
> On Mon, 27 Apr 2020 at 17:51, Richard Purdie
> <[email protected]> wrote:
>
> On Mon, 2020-04-27 at 16:13 +0300, Samuli Piippo wrote:
>
> meta-mingw is using Mingw-w64 but the host triplet does not match
> the expected pattern. config/os/mingw32-w64 enables more features
> that were not working with mingw32.
>
> Signed-off-by: Samuli Piippo <[email protected]>
> ---
>  meta/recipes-devtools/gcc/gcc-9.3.inc         |  1 +
>  ...nfig-os-mingw32-w64-for-mingw-builds.patch | 36 +++++++++++++++++++
>  2 files changed, 37 insertions(+)
>  create mode 100644 
> meta/recipes-devtools/gcc/gcc-9.3/0040-Always-use-config-os-mingw32-w64-for-mingw-builds.patch
>
> diff --git a/meta/recipes-devtools/gcc/gcc-9.3.inc 
> b/meta/recipes-devtools/gcc/gcc-9.3.inc
> index b0411078d3..4c8275bf2a 100644
> --- a/meta/recipes-devtools/gcc/gcc-9.3.inc
> +++ b/meta/recipes-devtools/gcc/gcc-9.3.inc
> @@ -67,6 +67,7 @@ SRC_URI = "\
>             
> file://0037-CVE-2019-14250-Check-zero-value-in-simple_object_elf.patch \
>             
> file://0038-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch \
>             
> file://0039-process_alt_operands-Don-t-match-user-defined-regs-o.patch \
> +           
> file://0040-Always-use-config-os-mingw32-w64-for-mingw-builds.patch \
>  "
>  S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
>  SRC_URI[sha256sum] = 
> "71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1"
> diff --git 
> a/meta/recipes-devtools/gcc/gcc-9.3/0040-Always-use-config-os-mingw32-w64-for-mingw-builds.patch
>  
> b/meta/recipes-devtools/gcc/gcc-9.3/0040-Always-use-config-os-mingw32-w64-for-mingw-builds.patch
> new file mode 100644
> index 0000000000..5a167f252c
> --- /dev/null
> +++ 
> b/meta/recipes-devtools/gcc/gcc-9.3/0040-Always-use-config-os-mingw32-w64-for-mingw-builds.patch
> @@ -0,0 +1,36 @@
> +From 052f7e5db0d793155015530b639c4e42d37eb7eb Mon Sep 17 00:00:00 2001
> +From: Samuli Piippo <[email protected]>
> +Date: Fri, 23 Aug 2019 10:10:43 +0300
> +Subject: [PATCH] Always use config/os/mingw32-w64 for mingw builds
> +
> +Make sure we use the w64 version of the configs, since that's what
> +meta-mingw is using.
> +
> +Signed-off-by: Samuli Piippo <[email protected]>
> +---
> + libstdc++-v3/configure.host | 12 ++----------
> + 1 file changed, 2 insertions(+), 10 deletions(-)
> +
> +diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
> +index 155a3cdea..adbda8784 100644
> +--- a/libstdc++-v3/configure.host
> ++++ b/libstdc++-v3/configure.host
> +@@ -277,16 +277,8 @@ case "${host_os}" in
> +     os_include_dir="os/hpux"
> +     ;;
> +   mingw32*)
> +-    case "$host" in
> +-      *-w64-*)
> +-        os_include_dir="os/mingw32-w64"
> +-        error_constants_dir="os/mingw32-w64"
> +-        ;;
> +-      *)
> +-        os_include_dir="os/mingw32"
> +-        error_constants_dir="os/mingw32"
> +-        ;;
> +-    esac
> ++    os_include_dir="os/mingw32-w64"
> ++    error_constants_dir="os/mingw32-w64"
> +     OPT_LDFLAGS="${OPT_LDFLAGS} \$(lt_host_flags)"
>
> It might make things a bit more obvious and upstreamable to just change
>       *-w64-*)
> to
>       *-w64*)
> if I understand correct?
>
> With meta-mingw, the host triplet is actually either
> i686-pokysdk-mingw32 or x86_64-pokysdk-mingw32, depending on bitness
> in the SDKMACHINE value.
>
> Hmm, it does indeed look like we are not correctly setting the host in a way 
> it can be detected by GCC. It's a little surprising this hasn't caused any 
> actual problems (at least up to this point)... is this something new to gcc 
> 9.3, and do we have any idea why the AB MinGW tests aren't seeing any 
> problems?
>
> Either way, it would probably be better to figure out a way to make the host 
> look correct in meta-mingw if at all possible.
>
> Your commit message is also a little confusing because the first few times I 
> read it, I thought we were configuring for 64-bit when 32-bit is desired, but 
> based on the current GCC code being replaced and the value of the 
> host-triplets, it would seem to be the opposite (we are getting 32-bit when 
> 64-bit is desired).

It's not actually the bitness that GCC is looking for here but the
version of the MinGW. The MingGW-w64 is a fork of the original MinGW
and can be used for both 32- and 64-bit builds. With the os/mingw32
config, GCC is using subset of the features that are available in
os/mingw32-w64, so builds still work although perhaps not always
optimally.

I don't see clear way to change the host value in meta-mingw without
breaking other layers and recipes. Only part that could be changed is
the -mingw32 part (HOST_OS), but recipes that do mingw specific things
already rely on that for the overrides.
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#137558): 
https://lists.openembedded.org/g/openembedded-core/message/137558
Mute This Topic: https://lists.openembedded.org/mt/73303435/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to