https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111170

            Bug ID: 111170
           Summary: Malformed manifest does not allow to run gcc on
                    Windows XP (Accessing a corrupted shared library)
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jdx at o2 dot pl
                CC: costas.argyris at gmail dot com
  Target Milestone: ---
            Target: i686-w64-mingw32 @ Windows XP
             Build: i686-w64-mingw32 @ Windows 10

I wanted to build gcc 13.2 with intention to run it on an old Windows
XP/Pentium-M machine. My build environment is MSYS2/MinGW32 @ Windows 10.
Everything went fine and I could run resulting binaries on the build machine
under MinGW32 terminal. However when I tried to run them on the target machine,
I got "bash: ./mingw-gcc/bin/gcc: Accessing a corrupted shared library". After
a few days of heavy fight I found out that this is due to malformed manifest
embedded in some (not all!) gcc executables. Newer version of Windows are more
forgiving and can tolerate malformed manifests while Windows XP is not; that's
why I could run freshly built gcc on my Windows 10 box. Using a resource editor
I have replaced malformed manifests with a default one (taken from
https://packages.msys2.org/base/mingw-w64-windows-default-manifest) and now
everything runs fine on XP.

The malformed manifest comes from
https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=d11e088210a551235d3937f867ee1c8b19d02290
related to PR108865. I think the proper solution is to merge default manifest
from MSYS and the one mentioned in the diff above.

Reply via email to