bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/28885] New: dlltool broke in 2.38


From: mikpelinux at gmail dot com
Subject: [Bug binutils/28885] New: dlltool broke in 2.38
Date: Sat, 12 Feb 2022 15:27:37 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=28885

            Bug ID: 28885
           Summary: dlltool broke in 2.38
           Product: binutils
           Version: 2.38
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: mikpelinux at gmail dot com
  Target Milestone: ---

With binutils-2.38 in a cross to x86_64-w64-mingw32 I persistently see random
breakage in dlltool during the build of mingw-w64's "crt".

Example 1:
...
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k
--as=x86_64-w64-mingw32-as --output-lib lib64/libd3dcompiler_33.a  --input-def
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/lib64/d3dcompiler_33.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k
--as=x86_64-w64-mingw32-as --output-lib lib64/libd3dcompiler_34.a  --input-def
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/lib64/d3dcompiler_34.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k
--as=x86_64-w64-mingw32-as --output-lib lib64/libd3dcompiler_35.a  --input-def
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/lib64/d3dcompiler_35.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k
--as=x86_64-w64-mingw32-as --output-lib lib64/libd3dcompiler_36.a  --input-def
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/lib64/d3dcompiler_36.def
Assembler messages:
Error: can't open D3DCompiler_dll_t.s for reading: No such file or directory
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k
--as=x86_64-w64-mingw32-as --output-lib lib64/libd3dcompiler_37.a  --input-def
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/lib64/d3dcompiler_37.def
x86_64-w64-mingw32-dlltool: x86_64-w64-mingw32-as exited with status 1
x86_64-w64-mingw32-dlltool: failed to open temporary tail file:
D3DCompiler_dll_t.o: No such file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00000.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00001.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00002.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00003.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00004.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00005.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00006.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00007.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00008.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00009.o: No such
file or directory
make[1]: *** [Makefile:83854: lib64/libd3dcompiler_36.a] Error 1
make[1]: *** Waiting for unfinished jobs....
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00000.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00001.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00002.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00003.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00004.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00005.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00006.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00007.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00008.o: No such
file or directory
x86_64-w64-mingw32-dlltool: cannot delete D3DCompiler_dll_s00009.o: No such
file or directory

Example 2:
...
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k
--as=x86_64-w64-mingw32-as --output-lib lib64/libd3dx9.a  --input-def
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/lib64/d3dx9_43.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k
--as=x86_64-w64-mingw32-as --output-lib lib64/libd3dx10.a  --input-def
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/lib64/d3dx10_43.def
x86_64-w64-mingw32-dlltool: lib32/libd3dx9.a: error reading d3dx9_43_dll_h.o:
file truncated
make[1]: *** [Makefile:83819: lib32/libd3dx9.a] Error 1
make[1]: *** Waiting for unfinished jobs....
x86_64-w64-mingw32-dlltool: lib64/libd3dx9.a: error reading d3dx9_43_dll_t.o:
No such file or directory

I've also seen it produce .a files that ar complained about containing invalid
or truncated files.

These random failures occur persistently when using binutils-2.38 and parallel
make (make -jN) for mingw-w64's crt. The failures disappear if I use
non-parallel make, or revert to binutils-2.37.

A git bisect identified this late change in 2.38 development as the cause:

# first bad commit: [fdeee5d59dca41e3c70c399a939105e39a4b4282] Allow inferring
tmp_prefix from the dll name from a def file

which makes sense since it touches dlltool.c.

Host: x86_64-pc-linux-gnu (Fedora 34)

Steps for building cross to mingw-w64 (each in a separate build dir):

/tmp/binutils-2.38/configure --target=x86_64-w64-mingw32
--enable-targets=x86_64-w64-mingw32,i686-w64-mingw32
--prefix=/tmp/cross-mingw64 --with-sysroot=/tmp/cross-mingw64 --disable-gdb
--disable-gold --disable-nls --disable-plugins --disable-readline
--disable-sim; make -j; make install
/tmp/mingw-w64-v9.0.0/mingw-w64-headers/configure
--prefix=/tmp/cross-mingw64/x86_64-w64-mingw32 --host=x86_64-w64-mingw32; make
install; ln -sf x86_64-w64-mingw32 /tmp/cross-mingw64/mingw
/tmp/gcc-11.2.0/configure --target=x86_64-w64-mingw32
--prefix=/tmp/cross-mingw64 --with-sysroot=/tmp/cross-mingw64
--disable-libatomic --disable-libgomp --disable-libitm --disable-libmpx
--disable-libquadmath --disable-libsanitizer --disable-lto --disable-nls
--disable-plugin --disable-shared --enable-checking=release --enable-multilib
--enable-64bit --with-dwarf --enable-threads=win32 --enable-languages=c; make
-j all-gcc; make install-gcc
/tmp/mingw-w64-v9.0.0/mingw-w64-crt/configure
--prefix=/tmp/cross-mingw64/x86_64-w64-mingw32 --host=x86_64-w64-mingw32
--enable-lib32 --enable-lib64; make -j
(it's the last step above that fails in dlltool)
(to be followed by install of crt and rebuild of full gcc)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]