public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
@ 2021-05-05  3:48 unlvsur at live dot com
  2021-05-05  3:51 ` [Bug libstdc++/100427] " unlvsur at live dot com
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-05-05  3:48 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 100427
           Summary: canadian compile for mingw-w64 copies the wrong dlls
                    for mingw-w64 multilibs
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: unlvsur at live dot com
  Target Milestone: ---

i find that libstdc++ incorrectly installed 32bit in the $sysroot/bin.
Technically, $sysroot/lib or $sysroot/lib64 should install 64bits of
libstdc++.dll 

The code is compiled, but the libstdc++'s dlls are installed incorrectly.

cqwrteur@Home-Server:~/all_mingw_toolchains/host/x86_64-w64-mingw32/bin$
objdump -h libstdc++-6.dll

libstdc++-6.dll:     file format pei-i386

Sections:

The actual dll is

cqwrteur@Home-Server:~/myhome/glibc231/phase2/gcc/x86_64-w64-mingw32/libstdc++-v3/src/.libs$
objdump -h libstdc++-6.dll

libstdc++-6.dll:     file format pei-x86-64

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
@ 2021-05-05  3:51 ` unlvsur at live dot com
  2021-05-05  3:53 ` unlvsur at live dot com
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-05-05  3:51 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from cqwrteur <unlvsur at live dot com> ---
I think this is probably the reason why I got the last error, because canadian
cross toolchains install the wrong multilibs for dlls.

I personally suggest libstdc++-6.dll should install in /lib just like Linux or
other POSIX compliant systems are doing. Or of course, it will break multilibs.

Just add /lib or /lib64 to the environmental variable list on windows or in the
registry with wine, it will work correctly and the operating system will find
out the correct dll for both 32bit and 64bit libstdc++-6.dll

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
  2021-05-05  3:51 ` [Bug libstdc++/100427] " unlvsur at live dot com
@ 2021-05-05  3:53 ` unlvsur at live dot com
  2021-05-05  3:56 ` unlvsur at live dot com
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-05-05  3:53 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from cqwrteur <unlvsur at live dot com> ---
about gcc itself.

since gcc is compiled with -static-libgcc -static-libstdc++, it should not be a
problem tbh.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
  2021-05-05  3:51 ` [Bug libstdc++/100427] " unlvsur at live dot com
  2021-05-05  3:53 ` unlvsur at live dot com
@ 2021-05-05  3:56 ` unlvsur at live dot com
  2021-07-19 14:03 ` unlvsur at live dot com
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-05-05  3:56 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from cqwrteur <unlvsur at live dot com> ---
Created attachment 50755
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50755&action=edit
config.log

config log file

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (2 preceding siblings ...)
  2021-05-05  3:56 ` unlvsur at live dot com
@ 2021-07-19 14:03 ` unlvsur at live dot com
  2021-09-10 10:11 ` unlvsur at live dot com
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-07-19 14:03 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from cqwrteur <unlvsur at live dot com> ---
is this bug fixed?

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (3 preceding siblings ...)
  2021-07-19 14:03 ` unlvsur at live dot com
@ 2021-09-10 10:11 ` unlvsur at live dot com
  2021-10-05  0:09 ` unlvsur at live dot com
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-09-10 10:11 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from cqwrteur <unlvsur at live dot com> ---
actually a lot of dlls are not copied correctly.

libstdc++-6.dll libatomic.dll libquadmath.dll libssp.dll are all copied with 32
bit dlls.

And libgcc_seh.dll is not copied.

I think the copy to bin behavior should be removed. It should be just like
normal linux distribution. 64 bit dlls in lib. 32 bit dlls in lib32.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (4 preceding siblings ...)
  2021-09-10 10:11 ` unlvsur at live dot com
@ 2021-10-05  0:09 ` unlvsur at live dot com
  2021-10-18  4:47 ` unlvsur at live dot com
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-10-05  0:09 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from cqwrteur <unlvsur at live dot com> ---
(In reply to cqwrteur from comment #5)
> actually a lot of dlls are not copied correctly.
> 
> libstdc++-6.dll libatomic.dll libquadmath.dll libssp.dll are all copied with
> 32 bit dlls.
> 
> And libgcc_seh.dll is not copied.
> 
> I think the copy to bin behavior should be removed. It should be just like
> normal linux distribution. 64 bit dlls in lib. 32 bit dlls in lib32.

or just provide a toggle for not copying DLLs. thank you

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (5 preceding siblings ...)
  2021-10-05  0:09 ` unlvsur at live dot com
@ 2021-10-18  4:47 ` unlvsur at live dot com
  2021-11-18  1:32 ` unlvsur at live dot com
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-10-18  4:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from cqwrteur <unlvsur at live dot com> ---
This is incorrect when we canadian build multilib. unfortunately.

I find this is an issue for not just libstdc++, but libaotmic, libssp etc too.
This script is clearly just not right. It should only copy DLLs from lib not
from lib32. and copy DLLs of 32bit to /lib32

  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
    library_names_spec='$libname.dll.a'
    # DLL is installed to $(libdir)/../bin by postinstall_cmds
    postinstall_cmds='base_file=`basename \${file}`~
      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo
\$dlname'\''`~
      dldir=$destdir/`dirname \$dlpath`~
      test -d \$dldir || mkdir -p \$dldir~
      $install_prog $dir/$dlname \$dldir/$dlname~
      chmod a+x \$dldir/$dlname~
      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
      fi'
    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
      dlpath=$dir/\$dldll~
       $RM \$dlpath'
    shlibpath_overrides_runpath=yes

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug libstdc++/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (6 preceding siblings ...)
  2021-10-18  4:47 ` unlvsur at live dot com
@ 2021-11-18  1:32 ` unlvsur at live dot com
  2021-11-18  9:41 ` [Bug bootstrap/100427] " redi at gcc dot gnu.org
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2021-11-18  1:32 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #8 from cqwrteur <unlvsur at live dot com> ---
Created attachment 51827
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51827&action=edit
Patch for fixing this issue

LOL. it bloats my mind. WHY WHY WHY are

     # DLL is installed to $(libdir)/../bin by postinstall_cmds

Twice in libstdc++'s configure?

We need a full-on cleanup on GCC source, please.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug bootstrap/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (7 preceding siblings ...)
  2021-11-18  1:32 ` unlvsur at live dot com
@ 2021-11-18  9:41 ` redi at gcc dot gnu.org
  2022-12-26 15:35 ` nightstrike at gmail dot com
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: redi at gcc dot gnu.org @ 2021-11-18  9:41 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to cqwrteur from comment #8)
> LOL. it bloats my mind. WHY WHY WHY are
> 
>      # DLL is installed to $(libdir)/../bin by postinstall_cmds
> 
> Twice in libstdc++'s configure?

Because it includes other .m4 files which include libtool.m4 twice. Why is it a
problem?

> We need a full-on cleanup on GCC source, please.

That isn't going to happen unless somebody volunteers to do it.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug bootstrap/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (8 preceding siblings ...)
  2021-11-18  9:41 ` [Bug bootstrap/100427] " redi at gcc dot gnu.org
@ 2022-12-26 15:35 ` nightstrike at gmail dot com
  2022-12-26 16:01 ` nightstrike at gmail dot com
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: nightstrike at gmail dot com @ 2022-12-26 15:35 UTC (permalink / raw)
  To: gcc-bugs

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

nightstrike <nightstrike at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nightstrike at gmail dot com

--- Comment #10 from nightstrike <nightstrike at gmail dot com> ---
(In reply to cqwrteur from comment #5)
> I think the copy to bin behavior should be removed. It should be just like
> normal linux distribution. 64 bit dlls in lib. 32 bit dlls in lib32.

This is a feature of Windows.  Windows will find dlls in PATH, not in lib
directories.

Multilib toolchains do face issues with versioned runtime libraries.  You can
try configuring with --enable-version-specific-runtime-libs.  Generally
speaking, it's easier to just build two separate toolchains than to try getting
multilib to work.  I made the mistake of pushing for multilib to be enabled by
default, and we never got it working quite well.

Anyway, I don't think this is a bug as stated.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug bootstrap/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (9 preceding siblings ...)
  2022-12-26 15:35 ` nightstrike at gmail dot com
@ 2022-12-26 16:01 ` nightstrike at gmail dot com
  2022-12-26 16:03 ` unlvsur at live dot com
  2022-12-26 16:03 ` unlvsur at live dot com
  12 siblings, 0 replies; 14+ messages in thread
From: nightstrike at gmail dot com @ 2022-12-26 16:01 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #11 from nightstrike <nightstrike at gmail dot com> ---
Possible duplicate of PR39947

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug bootstrap/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (10 preceding siblings ...)
  2022-12-26 16:01 ` nightstrike at gmail dot com
@ 2022-12-26 16:03 ` unlvsur at live dot com
  2022-12-26 16:03 ` unlvsur at live dot com
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2022-12-26 16:03 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #12 from cqwrteur <unlvsur at live dot com> ---
(In reply to nightstrike from comment #10)
> (In reply to cqwrteur from comment #5)
> > I think the copy to bin behavior should be removed. It should be just like
> > normal linux distribution. 64 bit dlls in lib. 32 bit dlls in lib32.
> 
> This is a feature of Windows.  Windows will find dlls in PATH, not in lib
> directories.
> 
> Multilib toolchains do face issues with versioned runtime libraries.  You
> can try configuring with --enable-version-specific-runtime-libs.  Generally
> speaking, it's easier to just build two separate toolchains than to try
> getting multilib to work.  I made the mistake of pushing for multilib to be
> enabled by default, and we never got it working quite well.
> 
> Anyway, I don't think this is a bug as stated.

yes this is a bug. because I can fix it easily.

You are wrong. Because cross toolchain for multilib would put DLLs in the lib
and lib32, not bin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug bootstrap/100427] canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs
  2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
                   ` (11 preceding siblings ...)
  2022-12-26 16:03 ` unlvsur at live dot com
@ 2022-12-26 16:03 ` unlvsur at live dot com
  12 siblings, 0 replies; 14+ messages in thread
From: unlvsur at live dot com @ 2022-12-26 16:03 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #13 from cqwrteur <unlvsur at live dot com> ---
(In reply to cqwrteur from comment #12)
> (In reply to nightstrike from comment #10)
> > (In reply to cqwrteur from comment #5)
> > > I think the copy to bin behavior should be removed. It should be just like
> > > normal linux distribution. 64 bit dlls in lib. 32 bit dlls in lib32.
> > 
> > This is a feature of Windows.  Windows will find dlls in PATH, not in lib
> > directories.
> > 
> > Multilib toolchains do face issues with versioned runtime libraries.  You
> > can try configuring with --enable-version-specific-runtime-libs.  Generally
> > speaking, it's easier to just build two separate toolchains than to try
> > getting multilib to work.  I made the mistake of pushing for multilib to be
> > enabled by default, and we never got it working quite well.
> > 
> > Anyway, I don't think this is a bug as stated.
> 
> yes this is a bug. because I can fix it easily.
> 
> You are wrong. Because cross toolchain for multilib would put DLLs in the
> lib and lib32, not bin

https://github.com/cppfastio/fast_io/blob/master/examples/0009.filesystem/gccx86canadianfix.cc

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-12-26 16:03 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-05  3:48 [Bug libstdc++/100427] New: canadian compile for mingw-w64 copies the wrong dlls for mingw-w64 multilibs unlvsur at live dot com
2021-05-05  3:51 ` [Bug libstdc++/100427] " unlvsur at live dot com
2021-05-05  3:53 ` unlvsur at live dot com
2021-05-05  3:56 ` unlvsur at live dot com
2021-07-19 14:03 ` unlvsur at live dot com
2021-09-10 10:11 ` unlvsur at live dot com
2021-10-05  0:09 ` unlvsur at live dot com
2021-10-18  4:47 ` unlvsur at live dot com
2021-11-18  1:32 ` unlvsur at live dot com
2021-11-18  9:41 ` [Bug bootstrap/100427] " redi at gcc dot gnu.org
2022-12-26 15:35 ` nightstrike at gmail dot com
2022-12-26 16:01 ` nightstrike at gmail dot com
2022-12-26 16:03 ` unlvsur at live dot com
2022-12-26 16:03 ` unlvsur at live dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).