Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[rust/clang] failed to build rust program that uses certain static lib (.a) file #13609

Closed
2 of 7 tasks
zhguyu opened this issue Oct 16, 2022 · 1 comment
Closed
2 of 7 tasks
Labels

Comments

@zhguyu
Copy link

zhguyu commented Oct 16, 2022

Description

Trying to build rav1e using recommended rust flags RUSTFLAGS="-C target-cpu=x86-64-v3" cargo build --release, and the thinLTO issue rust-lang/rust#98302 was circumvented by specifying fat LTO in Cargo.toml. Build failed with the following console output:

   Compiling rav1e v0.6.0 (F:\rav1e)
error: linking with `x86_64-w64-mingw32-clang` failed: exit code: 1
  |
  = note: "x86_64-w64-mingw32-clang" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-m64" "-Wl,--high-entropy-va" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "C:\\Users\\***\\AppData\\Local\\Temp\\rustcWVWQ03\\symbols.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.0.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.1.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.10.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.11.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.12.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.13.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.14.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.15.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.2.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.3.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.4.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.5.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.6.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.7.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.8.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.build_script_build.fc1a548b-cgu.9.rcgu.o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.1mk6s9evydj838p7.rcgu.o" "-L" "F:\\rav1e\\target\\release\\deps" "-L" "C:\\Users\\***\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\winapi-x86_64-pc-windows-gnu-0.4.0\\lib" "-L" "F:\\rav1e\\target\\release\\build\\libgit2-sys-a19d48734de24fe2\\out\\build" "-L" "D:/MSYS2/clang64/lib" "-L" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "F:\\rav1e\\target\\release\\deps\\libbuilt-80d953aca1ad7afb.rlib" "F:\\rav1e\\target\\release\\deps\\libcargo_lock-3f8f280f36cd7062.rlib" "F:\\rav1e\\target\\release\\deps\\libtoml-37ec2f0fe1d05ef6.rlib" "F:\\rav1e\\target\\release\\deps\\libgit2-5b82a945bf9a733d.rlib" "F:\\rav1e\\target\\release\\deps\\liburl-a08b0d3caa56e34b.rlib" "F:\\rav1e\\target\\release\\deps\\libidna-366410cd103a5dfb.rlib" "F:\\rav1e\\target\\release\\deps\\libunicode_normalization-2f6bfb7b3a086b80.rlib" "F:\\rav1e\\target\\release\\deps\\libtinyvec-9d9a96af3b9c5161.rlib" "F:\\rav1e\\target\\release\\deps\\libtinyvec_macros-dfae013329c00f8d.rlib" "F:\\rav1e\\target\\release\\deps\\libunicode_bidi-928457dbc4690836.rlib" "F:\\rav1e\\target\\release\\deps\\libform_urlencoded-7444179a8e06b888.rlib" "F:\\rav1e\\target\\release\\deps\\libpercent_encoding-88eaaa11e219460f.rlib" "F:\\rav1e\\target\\release\\deps\\liblog-45f6d0ad8a668379.rlib" "F:\\rav1e\\target\\release\\deps\\liblibgit2_sys-4475fc3ab89d8340.rlib" "F:\\rav1e\\target\\release\\deps\\liblibz_sys-4d29617796b0494c.rlib" "F:\\rav1e\\target\\release\\deps\\liblibc-3bd09e13fc6adee8.rlib" "F:\\rav1e\\target\\release\\deps\\libbitflags-8d2a392b65a2d45e.rlib" "F:\\rav1e\\target\\release\\deps\\libchrono-447bd8395c2b0364.rlib" "F:\\rav1e\\target\\release\\deps\\libnum_integer-f2cf17cab2d0a6c7.rlib" "F:\\rav1e\\target\\release\\deps\\libnum_traits-5496f7d6f37ce963.rlib" "F:\\rav1e\\target\\release\\deps\\libtime-f62bdaa33ae6dc52.rlib" "F:\\rav1e\\target\\release\\deps\\libwinapi-3a2632e81f8412a1.rlib" "F:\\rav1e\\target\\release\\deps\\libcc-3a985506337f3247.rlib" "F:\\rav1e\\target\\release\\deps\\libjobserver-c2b5d9ab05f4965c.rlib" "F:\\rav1e\\target\\release\\deps\\libnasm_rs-6e436f20906be1f4.rlib" "F:\\rav1e\\target\\release\\deps\\librayon-3daecff996a205ed.rlib" "F:\\rav1e\\target\\release\\deps\\librayon_core-a0a94d2e6f10b0d4.rlib" "F:\\rav1e\\target\\release\\deps\\libnum_cpus-9308f2630bb92797.rlib" "F:\\rav1e\\target\\release\\deps\\libcrossbeam_deque-00e70379a97e563f.rlib" "F:\\rav1e\\target\\release\\deps\\libcrossbeam_epoch-4d7fc600624e36a8.rlib" "F:\\rav1e\\target\\release\\deps\\libmemoffset-2f984550c4ab8123.rlib" "F:\\rav1e\\target\\release\\deps\\libscopeguard-8240fbbaca4bb41d.rlib" "F:\\rav1e\\target\\release\\deps\\libcrossbeam_channel-c2eda85fa2ee1c88.rlib" "F:\\rav1e\\target\\release\\deps\\libcrossbeam_utils-01730e04256929d4.rlib" "F:\\rav1e\\target\\release\\deps\\libcfg_if-68a1c858674e6dca.rlib" "F:\\rav1e\\target\\release\\deps\\libeither-b024025ee9e9f6ff.rlib" "F:\\rav1e\\target\\release\\deps\\librustc_version-2468e9861ec09d75.rlib" "F:\\rav1e\\target\\release\\deps\\libsemver-9738c0180364c340.rlib" "F:\\rav1e\\target\\release\\deps\\libserde-993e2a0295e61473.rlib" "-Wl,--start-group" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-894835858dd80803.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-52f0a2fdd1810d87.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libobject-33084c7d87198494.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libmemchr-84f0193becb20c5b.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libaddr2line-a2ddf2fdbe5500d2.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libgimli-c8abbcda29563214.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-00528c39ecffd37d.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd_detect-105c5285b801cf8d.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-a57615a46f0d1313.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libminiz_oxide-b4bd85be66312c64.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libadler-01e5ae87c73b75b4.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-e5eb7228c4906b52.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-8400aba1d618f14e.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-14a619e20200a041.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-12bffb4eb9f7ab86.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-05af6ed936a7f82f.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-a71d71a63ac4a02b.rlib" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-5657b292e655b34c.rlib" "-Wl,--end-group" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-172bd7491b525268.rlib" "-Wl,-Bdynamic" "-lwinhttp" "-lrpcrt4" "-lole32" "-lcrypt32" "-lz" "-lwinapi_advapi32" "-lwinapi_gdi32" "-lwinapi_kernel32" "-lwinapi_msimg32" "-lwinapi_ole32" "-lwinapi_opengl32" "-lwinapi_runtimeobject" "-lwinapi_winspool" "-ladvapi32" "-lole32" "-loleaut32" "-ladvapi32" "-luserenv" "-lkernel32" "-lws2_32" "-lbcrypt" "-l:libunwind.a" "-Wl,--nxcompat" "-L" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-o" "F:\\rav1e\\target\\release\\build\\rav1e-d2901c9842218cf2\\build_script_build-d2901c9842218cf2.exe" "-Wl,--gc-sections" "-no-pie" "-Wl,--strip-all" "D:\\MSYS2\\clang64\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: x86_64-w64-mingw32-clang: warning: argument unused during compilation: '-no-pie' [-Wunused-command-line-argument]
          ld.lld: error: C:\Users\***\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\lib/libwinapi_runtimeobject.a: unknown file type
          x86_64-w64-mingw32-clang: error: linker command failed with exit code 1 (use -v to see invocation)

The file in fault mentioned in the output libwinapi_runtimeobject.a is a text file that has the following content:

INPUT(
libwinapi_runtimeobject-api-ms-win-core-winrt-error-l1-1-0.a
libwinapi_runtimeobject-api-ms-win-core-winrt-string-l1-1-0.a
libwinapi_runtimeobject-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a
libwinapi_runtimeobject-api-ms-win-core-winrt-l1-1-0.a
libwinapi_runtimeobject-api-ms-win-ro-typeresolution-l1-1-0.a
libwinapi_runtimeobject-api-ms-win-core-winrt-error-l1-1-1.a
libwinapi_runtimeobject-api-ms-win-core-winrt-robuffer-l1-1-0.a
libwinapi_runtimeobject-api-ms-win-core-winrt-registration-l1-1-0.a
)

I double checked that the last time I built the same program (rav1e) in 19 July was successful. After the initial attempt I also tried to build the exact same version (and even an older one) of rav1e as the last successful build in July and it was also a failure, with the same console output. Both clang and rust were updated in the past months so I don't know whose fault that is.

Verification

Windows Version

Microsoft Windows [Version 10.0.22621.674]

MINGW environments affected

  • MINGW64
  • MINGW32
  • UCRT64
  • CLANG64
  • CLANG32
  • CLANGARM64

Expected behavior

Successful build.

Actual behavior

Build failed claiming an static lib (.a) file has unknown file type.

Repro steps

  1. Clean installation of MSYS2
  2. Update and install necessary packages such as clang (mingw-w64-clang-x86_64-toolchain) and rust
  3. Grab the rav1e codebase from https://github.com/xiph/rav1e
  4. Edit Cargo.toml profile to have the following content:
[profile.release]
opt-level = 3
strip = true
debug = false
incremental = false
lto = true
  1. Build with RUSTFLAGS="-C target-cpu=x86-64-v3" cargo build --release

Are you willing to submit a PR?

No response

@zhguyu zhguyu added the bug label Oct 16, 2022
@mati865
Copy link
Collaborator

mati865 commented Oct 16, 2022

Unfortunately it's upstream issue that we cannot workaround in any way retep998/winapi-rs#935
You can workaround it locally though by defining WINAPI_NO_BUNDLED_LIBRARIES=1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants