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

rustc_target: treat enum variants like union members, in call ABIs. #68443

Merged
merged 9 commits into from
Feb 8, 2020

Conversation

eddyb
Copy link
Member

@eddyb eddyb commented Jan 22, 2020

Fixes #68190, by handling non-C-like enums as-if they were an union of structs, in call ABIs.
Tests were provided by @sw17ch, from theirs and @bitwalker's original examples.

cc @nagisa @rkruppe

@rust-highfive
Copy link
Collaborator

r? @estebank

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 22, 2020
@sw17ch
Copy link
Contributor

sw17ch commented Jan 22, 2020

I've confirmed that my tests from #68190 are fixed by this PR. Thanks! #68190 (comment)

@eddyb eddyb force-pushed the abi-compat-enum branch 2 times, most recently from ae66171 to cc2f018 Compare January 22, 2020 13:23
@eddyb
Copy link
Member Author

eddyb commented Jan 22, 2020

@sw17ch Thanks, I've included your commits!

It might also be possible to test this via src/test/auxiliary/rust_test_helpers.c (if you grep src/test for the function names in there, you'll find a few tests which mention them), which has the advantage of being regular tests (instead of run-make-fulldeps).

But I don't have a strong preference either way, as long as it's tested.


Are we moving to a certain style of test for FFI interop, btw?
Ideally the same pairs of C and Rust code would be tested across all targets, all the time (I think we have some tests which are only enabled on x64 + SysV, even if they can work elsewhere).
cc @alexcrichton @gnzlbg @joshtriplett


r? @nagisa

@rust-highfive rust-highfive assigned nagisa and unassigned estebank Jan 22, 2020
@rust-highfive

This comment has been minimized.

@sw17ch
Copy link
Contributor

sw17ch commented Jan 22, 2020

@eddyb great!

I went with the test cases I did because they were the first ones I could find that glued C to Rust. I can try to add some of the non-C-like enumerations to rust_test_helpers.c as well.

@sw17ch
Copy link
Contributor

sw17ch commented Jan 22, 2020

I have added tests for the Option<u64> and Option<(u64,u64)> like cases to abi-sysv64-arg-passing.rs and rust_test_helpers.c. These only cover the Rust->C calling path rather than the C->Rust path.

The tests added to run-make-fulldeps cover both directions.

The commit adding the additional tests is here: sw17ch@b3ed14a

Note: I did ensure that there were failures before applying 88bfa00 and 4543040, but my branch orders the new tests after those commits.

Copy link
Member

@nagisa nagisa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM r=me.

I had to spend a few minutes trying to figure out why doing the "HACK" added by this PR is correct. Perhaps some additional commentary of why this transformation is correct is necessary there (perhaps just mentioning something along the lines of "in all instances where discriminant and union variants are in fact homogenous, this reinterpretation is always valid and equivalent")

@sw17ch
Copy link
Contributor

sw17ch commented Jan 28, 2020

@eddyb is there anything else I can help with in this PR? I'm happy to make the suggested updates above if you'd like someone else to address the requests.

I'm also unsure if you'd like to include the other tests I wrote using rust_test_helpers.c.

@eddyb
Copy link
Member Author

eddyb commented Feb 8, 2020

@bors r=nagisa

@bors
Copy link
Contributor

bors commented Feb 8, 2020

📌 Commit d69b3b1 has been approved by nagisa

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 8, 2020
@bors
Copy link
Contributor

bors commented Feb 8, 2020

⌛ Testing commit d69b3b1 with merge 62ab3070d4e94f62e51da3a6e1fe304f8a3467c2...

@rust-highfive
Copy link
Collaborator

The job x86_64-msvc-1 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2020-02-08T08:51:14.8961252Z Copying stage2 std from stage1 (x86_64-pc-windows-msvc -> x86_64-pc-windows-msvc / x86_64-pc-windows-msvc)
2020-02-08T08:51:14.9136352Z Building test helpers
2020-02-08T08:51:14.9177680Z running: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\cl.exe" "-nologo" "-MD" "-Brepro" "-FoD:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\native\\rust-test-helpers\\rust_test_helpers.o" "-c" "D:\\a\\1\\s\\src/test/auxiliary/rust_test_helpers.c"
2020-02-08T08:51:15.0480163Z rust_test_helpers.c
2020-02-08T08:51:15.8824227Z d:\a\1\s\src\test\auxiliary\rust_test_helpers.c(343) : warning C4715: 'rust_dbg_unpack_option_u64': not all control paths return a value
2020-02-08T08:51:15.8828378Z d:\a\1\s\src\test\auxiliary\rust_test_helpers.c(386) : warning C4715: 'rust_dbg_unpack_option_u64u64': not all control paths return a value
2020-02-08T08:51:15.9087272Z running: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\lib.exe" "-out:D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\native\\rust-test-helpers\\librust_test_helpers.a" "-nologo" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\native\\rust-test-helpers\\rust_test_helpers.o"
2020-02-08T08:51:15.9920033Z exit code: 0
2020-02-08T08:51:15.9962522Z [TIMING] TestHelpers { target: "x86_64-pc-windows-msvc" } -- 1.082
2020-02-08T08:51:16.0079222Z Building stage0 tool compiletest (x86_64-pc-windows-msvc)
---
2020-02-08T09:45:10.2001057Z status: exit code: 2
2020-02-08T09:45:10.2001581Z command: "make"
2020-02-08T09:45:10.2001983Z stdout:
2020-02-08T09:45:10.2003193Z ------------------------------------------
2020-02-08T09:45:10.2003793Z make[1]: Entering directory '/d/a/1/s/src/test/run-make-fulldeps/pass-non-c-like-enum-to-c'
2020-02-08T09:45:10.2004052Z 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\cl.exe' -nologo -MT -Brepro -c test.c -o /d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c/test.lib ws2_32.lib userenv.lib advapi32.lib 
2020-02-08T09:45:10.2004229Z test.c
2020-02-08T09:45:10.2006078Z PATH="/d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c:D:\a\1\s\build\x86_64-pc-windows-msvc\stage2\bin:/c/Program Files (x86)/Windows Kits/10/bin/x64:/c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64:/c/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64:/d/a/1/s/build/x86_64-pc-windows-msvc/stage0-bootstrap-tools/x86_64-pc-windows-msvc/release/deps:/d/a/1/s/build/x86_64-pc-windows-msvc/stage0/bin:/mingw64/bin:/d/a/1/s/ninja:/mingw64/bin:/c/Python27amd64:/usr/bin:/c/Program Files (x86)/Inno Setup 5:/d/a/1/s/sccache:/c/agents/2.164.7/externals/git/cmd:/c/hostedtoolcache/windows/Python/3.6.8/x64:/c/hostedtoolcache/windows/Python/3.6.8/x64/Scripts:/c/Program Files/Mercurial:/c/ProgramData/kind:/c/vcpkg:/c/cf-cli:/c/Program Files (x86)/NSIS:/c/Program Files/Mercurial:/c/Program Files/Boost/1.69.0:/c/Program Files/dotnet:/c/mysql-5.7.21-winx64/bin:/c/Program Files/Java/zulu-8-azure-jdk_8.40.0.25-8.0.222-win_x64/bin:/c/Program Files (x86)/sbt/bin:/c/Rust/.cargo/bin:/c/hostedtoolcache/windows/Ruby/2.5.7/x64/bin:/c/Go1.12.7/bin:/c/hostedtoolcache/windows/Python/3.6.8/x64/Scripts:/c/hostedtoolcache/windows/Python/3.6.8/x64:/c/npm/prefix:/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2/wbin:/c/Program Files/Microsoft MPI/Bin:/c/windows/system32:/c/windows:/c/windows/System32/Wbem:/c/windows/System32/WindowsPowerShell/v1.0:/c/ProgramData/Chocolatey/bin:/c/Program Files/Docker:/c/Program Files/PowerShell/6:/c/Program Files/dotnet:/c/Program Files/Microsoft SQL Server/130/Tools/Binn:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn:/c/Program Files (x86)/Windows Kits/10/Windows Performance Toolkit:/c/Program Files/Microsoft Service Fabric/bin/Fabric/Fabric.Code:/c/Program Files/Microsoft SDKs/Service Fabric/Tools/ServiceFabricLocalClusterManager:/c/Program Files/nodejs:/c/Program Files/Git/cmd:/c/Program Files/Git/mingw64/bin:/c/Program Files/Git/usr/bin:/c/tools/php:/c/Program Files (x86)/sbt/bin:/c/Program Files (x86)/Subversion/bin:/c/SeleniumWebDrivers/ChromeDriver:/c/ProgramData/chocolatey/lib/maven/apache-maven-3.6.2/bin:/c/Program Files/CMake/bin:/c/Strawberry/c/bin:/c/Strawberry/perl/site/bin:/c/Strawberry/perl/bin:/c/Program Files/OpenSSL/bin:/c/Users/VssAdministrator/.dotnet/tools:/c/Program Files (x86)/Microsoft SQL Server/13" 'D:\a\1\s\build\x86_64-pc-windows-msvc\stage2\bin\rustc.exe' --out-dir /d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c -L /d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c  nonclike.rs -L/d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c -ltest
2020-02-08T09:45:10.2007760Z make[1]: Leaving directory '/d/a/1/s/src/test/run-make-fulldeps/pass-non-c-like-enum-to-c'
2020-02-08T09:45:10.2008016Z ------------------------------------------
2020-02-08T09:45:10.2008473Z stderr:
2020-02-08T09:45:10.2008594Z ------------------------------------------
2020-02-08T09:45:10.2008594Z ------------------------------------------
2020-02-08T09:45:10.2009037Z cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
2020-02-08T09:45:10.2009170Z cl : Command line warning D9027 : source file 'ws2_32.lib' ignored
2020-02-08T09:45:10.2009635Z cl : Command line warning D9027 : source file 'userenv.lib' ignored
2020-02-08T09:45:10.2009813Z cl : Command line warning D9027 : source file 'advapi32.lib' ignored
2020-02-08T09:45:10.2009908Z error: linking with `link.exe` failed: exit code: 1181
2020-02-08T09:45:10.2010010Z   |
2020-02-08T09:45:10.2018657Z   = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.nonclike.7rcbfp3g-cgu.0.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.nonclike.7rcbfp3g-cgu.1.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.nonclike.7rcbfp3g-cgu.2.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.nonclike.7rcbfp3g-cgu.3.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.nonclike.7rcbfp3g-cgu.4.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.nonclike.7rcbfp3g-cgu.5.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.nonclike.7rcbfp3g-cgu.6.rcgu.o" "/OUT:D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.exe" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c\\nonclike.rhdeuwgsq436fep.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\libstd.natvis" "/LIBPATH:D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c" "/LIBPATH:D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/pass-non-c-like-enum-to-c/pass-non-c-like-enum-to-c" "/LIBPATH:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "test.lib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-fa02e5ef70caef86.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-08894994a8db6e19.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-072b487607c97e2a.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-4a766137e8cba4cf.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libbacktrace-d1353743e82ab963.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-9f6b4d8f0e2b4909.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-60142a06fcf8c999.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-38edfec3655e6e6c.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-70639862fd020f70.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-f9e9301589d0747a.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-19713d36e8515312.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-1747761091d40258.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-c12a5b8f157eca48.rlib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"
2020-02-08T09:45:10.2021196Z   = note: LINK : fatal error LNK1181: cannot open input file 'test.lib'
2020-02-08T09:45:10.2022346Z 
2020-02-08T09:45:10.2022452Z error: aborting due to previous error
2020-02-08T09:45:10.2022661Z 
2020-02-08T09:45:10.2022661Z 
2020-02-08T09:45:10.2022733Z make[1]: *** [Makefile:5: all] Error 1
2020-02-08T09:45:10.2022881Z ------------------------------------------
2020-02-08T09:45:10.2022949Z 
2020-02-08T09:45:10.2022988Z 
2020-02-08T09:45:10.2022988Z 
2020-02-08T09:45:10.2023084Z ---- [run-make] run-make-fulldeps\return-non-c-like-enum-from-c stdout ----
2020-02-08T09:45:10.2023238Z error: make failed
2020-02-08T09:45:10.2023545Z status: exit code: 2
2020-02-08T09:45:10.2023619Z command: "make"
2020-02-08T09:45:10.2023711Z stdout:
2020-02-08T09:45:10.2023711Z stdout:
2020-02-08T09:45:10.2023782Z ------------------------------------------
2020-02-08T09:45:10.2023906Z make[1]: Entering directory '/d/a/1/s/src/test/run-make-fulldeps/return-non-c-like-enum-from-c'
2020-02-08T09:45:10.2024284Z 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\cl.exe' -nologo -MT -Brepro -c test.c -o /d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c/test.lib ws2_32.lib userenv.lib advapi32.lib 
2020-02-08T09:45:10.2024601Z test.c
2020-02-08T09:45:10.2026997Z PATH="/d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c:D:\a\1\s\build\x86_64-pc-windows-msvc\stage2\bin:/c/Program Files (x86)/Windows Kits/10/bin/x64:/c/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64:/c/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64:/d/a/1/s/build/x86_64-pc-windows-msvc/stage0-bootstrap-tools/x86_64-pc-windows-msvc/release/deps:/d/a/1/s/build/x86_64-pc-windows-msvc/stage0/bin:/mingw64/bin:/d/a/1/s/ninja:/mingw64/bin:/c/Python27amd64:/usr/bin:/c/Program Files (x86)/Inno Setup 5:/d/a/1/s/sccache:/c/agents/2.164.7/externals/git/cmd:/c/hostedtoolcache/windows/Python/3.6.8/x64:/c/hostedtoolcache/windows/Python/3.6.8/x64/Scripts:/c/Program Files/Mercurial:/c/ProgramData/kind:/c/vcpkg:/c/cf-cli:/c/Program Files (x86)/NSIS:/c/Program Files/Mercurial:/c/Program Files/Boost/1.69.0:/c/Program Files/dotnet:/c/mysql-5.7.21-winx64/bin:/c/Program Files/Java/zulu-8-azure-jdk_8.40.0.25-8.0.222-win_x64/bin:/c/Program Files (x86)/sbt/bin:/c/Rust/.cargo/bin:/c/hostedtoolcache/windows/Ruby/2.5.7/x64/bin:/c/Go1.12.7/bin:/c/hostedtoolcache/windows/Python/3.6.8/x64/Scripts:/c/hostedtoolcache/windows/Python/3.6.8/x64:/c/npm/prefix:/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2/wbin:/c/Program Files/Microsoft MPI/Bin:/c/windows/system32:/c/windows:/c/windows/System32/Wbem:/c/windows/System32/WindowsPowerShell/v1.0:/c/ProgramData/Chocolatey/bin:/c/Program Files/Docker:/c/Program Files/PowerShell/6:/c/Program Files/dotnet:/c/Program Files/Microsoft SQL Server/130/Tools/Binn:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn:/c/Program Files (x86)/Windows Kits/10/Windows Performance Toolkit:/c/Program Files/Microsoft Service Fabric/bin/Fabric/Fabric.Code:/c/Program Files/Microsoft SDKs/Service Fabric/Tools/ServiceFabricLocalClusterManager:/c/Program Files/nodejs:/c/Program Files/Git/cmd:/c/Program Files/Git/mingw64/bin:/c/Program Files/Git/usr/bin:/c/tools/php:/c/Program Files (x86)/sbt/bin:/c/Program Files (x86)/Subversion/bin:/c/SeleniumWebDrivers/ChromeDriver:/c/ProgramData/chocolatey/lib/maven/apache-maven-3.6.2/bin:/c/Program Files/CMake/bin:/c/Strawberry/c/bin:/c/Strawberry/perl/site/bin:/c/Strawberry/perl/bin:/c/Program Files/OpenSSL/bin:/c/Users/VssAdministrator/.dotnet/tools:/c/Program Files (x86)/Microsoft SQL Server/13" 'D:\a\1\s\build\x86_64-pc-windows-msvc\stage2\bin\rustc.exe' --out-dir /d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c -L /d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c  nonclike.rs -L/d/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c -ltest
2020-02-08T09:45:10.2028682Z make[1]: Leaving directory '/d/a/1/s/src/test/run-make-fulldeps/return-non-c-like-enum-from-c'
2020-02-08T09:45:10.2028853Z ------------------------------------------
2020-02-08T09:45:10.2028954Z stderr:
2020-02-08T09:45:10.2029022Z ------------------------------------------
2020-02-08T09:45:10.2029022Z ------------------------------------------
2020-02-08T09:45:10.2029145Z cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
2020-02-08T09:45:10.2029269Z cl : Command line warning D9027 : source file 'ws2_32.lib' ignored
2020-02-08T09:45:10.2029368Z cl : Command line warning D9027 : source file 'userenv.lib' ignored
2020-02-08T09:45:10.2029484Z cl : Command line warning D9027 : source file 'advapi32.lib' ignored
2020-02-08T09:45:10.2029586Z error: linking with `link.exe` failed: exit code: 1181
2020-02-08T09:45:10.2029681Z   |
2020-02-08T09:45:10.2034070Z   = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.0.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.1.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.10.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.11.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.12.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.13.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.14.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.15.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.2.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.3.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.4.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.5.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.6.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.7.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.8.rcgu.o" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.nonclike.7rcbfp3g-cgu.9.rcgu.o" "/OUT:D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.exe" "D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c\\nonclike.rhdeuwgsq436fep.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\etc\\libstd.natvis" "/LIBPATH:D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c" "/LIBPATH:D:/a/1/s/build/x86_64-pc-windows-msvc/test/run-make-fulldeps/return-non-c-like-enum-from-c/return-non-c-like-enum-from-c" "/LIBPATH:C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "test.lib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-fa02e5ef70caef86.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-08894994a8db6e19.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-072b487607c97e2a.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-4a766137e8cba4cf.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libbacktrace-d1353743e82ab963.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-9f6b4d8f0e2b4909.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-60142a06fcf8c999.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-38edfec3655e6e6c.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-70639862fd020f70.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-f9e9301589d0747a.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-19713d36e8515312.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-1747761091d40258.rlib" "C:\\MORE_SPACE\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-c12a5b8f157eca48.rlib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"
2020-02-08T09:45:10.2036896Z   = note: LINK : fatal error LNK1181: cannot open input file 'test.lib'
2020-02-08T09:45:10.2037050Z 
2020-02-08T09:45:10.2037120Z error: aborting due to previous error
2020-02-08T09:45:10.2037373Z 
2020-02-08T09:45:10.2037373Z 
2020-02-08T09:45:10.2037613Z make[1]: *** [Makefile:5: all] Error 1
2020-02-08T09:45:10.2037922Z ------------------------------------------
2020-02-08T09:45:10.2037974Z 
2020-02-08T09:45:10.2038029Z 
2020-02-08T09:45:10.2038358Z 
---
2020-02-08T09:45:10.2039017Z thread 'main' panicked at 'Some tests failed', src\tools\compiletest\src\main.rs:348:22
2020-02-08T09:45:10.2039143Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2020-02-08T09:45:10.2039202Z 
2020-02-08T09:45:10.2039322Z 
2020-02-08T09:45:10.2042395Z command did not execute successfully: "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\stage0-tools-bin\\compiletest.exe" "--compile-lib-path" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\stage2\\bin" "--run-lib-path" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\stage2\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "--rustc-path" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\stage2\\bin\\rustc.exe" "--rustdoc-path" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\stage2\\bin\\rustdoc.exe" "--src-base" "D:\\a\\1\\s\\src/test\\run-make-fulldeps" "--build-base" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\test\\run-make-fulldeps" "--stage-id" "stage2-x86_64-pc-windows-msvc" "--mode" "run-make" "--target" "x86_64-pc-windows-msvc" "--host" "x86_64-pc-windows-msvc" "--llvm-filecheck" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\llvm\\build\\bin\\FileCheck.exe" "--nodejs" "C:\\Program Files\\nodejs\\node" "--host-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\native\\rust-test-helpers" "--target-rustcflags" "-Crpath -O -Cdebuginfo=0 -Zunstable-options  -Lnative=D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\native\\rust-test-helpers" "--docck-python" "D:\\a\\1\\s\\msys2\\mingw64\\bin\\python2.7" "--lldb-python" "D:\\a\\1\\s\\msys2\\mingw64\\bin\\python2.7" "--gdb" "D:\\a\\1\\s\\msys2\\mingw64\\bin\\gdb" "--llvm-version" "9.0.1-rust-1.43.0-nightly\n" "--cc" "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\cl.exe" "--cxx" "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\cl.exe" "--cflags" "-nologo -MT -Brepro" "--llvm-components" "aarch64 aarch64asmparser aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitstreamreader bitwriter codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfogsym debuginfomsf debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel gtest gtest_main hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo instcombine instrumentation interpreter ipo irreader jitlink libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430codegen msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit passes powerpc powerpcasmparser powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata remarks riscv riscvasmparser riscvcodegen riscvdesc riscvdisassembler riscvinfo riscvutils runtimedyld scalaropts selectiondag sparc sparcasmparser sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target testingsupport textapi transformutils vectorize webassembly webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler webassemblyinfo windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info x86utils xray" "--llvm-bin-dir" "D:\\a\\1\\s\\build\\x86_64-pc-windows-msvc\\llvm\\build\\bin" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
2020-02-08T09:45:10.2044237Z 
2020-02-08T09:45:10.2044297Z 
2020-02-08T09:45:10.2044297Z 
2020-02-08T09:45:10.2813115Z failed to run: D:\a\1\s\build\bootstrap\debug\bootstrap test --exclude src/test/ui --exclude src/test/compile-fail --exclude src/tools/linkchecker
2020-02-08T09:45:10.2813452Z Build completed unsuccessfully in 2:12:05
2020-02-08T09:45:10.3382538Z make: *** [Makefile:80: ci-subset-1] Error 1
2020-02-08T09:45:10.4074532Z   local time: Sat Feb  8 09:45:10 CUT 2020
2020-02-08T09:45:10.6824973Z   network time: Sat, 08 Feb 2020 09:45:10 GMT
2020-02-08T09:45:10.6848952Z == end clock drift check ==
2020-02-08T09:45:10.7820987Z 
2020-02-08T09:45:10.7820987Z 
2020-02-08T09:45:11.1440451Z ##[error]Bash exited with code '2'.
2020-02-08T09:45:11.1854792Z ##[section]Starting: Checkout rust-lang/rust@auto to s
2020-02-08T09:45:11.2588560Z ==============================================================================
2020-02-08T09:45:11.2588683Z Task         : Get sources
2020-02-08T09:45:11.2588770Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@bors
Copy link
Contributor

bors commented Feb 8, 2020

💔 Test failed - checks-azure

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 8, 2020
-include ../tools.mk

all:
$(CC) -c test.c -o $(call STATICLIB,test) $(EXTRACFLAGS) $(EXTRACXXFLAGS)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before this PR, I can't find any use of this pattern, I think it should be:

all: $(call NATIVE_STATICLIB,test)

@eddyb
Copy link
Member Author

eddyb commented Feb 8, 2020

@bors r=nagisa

@bors
Copy link
Contributor

bors commented Feb 8, 2020

📌 Commit d20e4aa has been approved by nagisa

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 8, 2020
@bors
Copy link
Contributor

bors commented Feb 8, 2020

⌛ Testing commit d20e4aa with merge 85ffd44...

bors added a commit that referenced this pull request Feb 8, 2020
rustc_target: treat enum variants like union members, in call ABIs.

Fixes #68190, by handling non-C-like `enum`s as-if they were an `union` of `struct`s, in call ABIs.
Tests were provided by @sw17ch, from theirs and @bitwalker's original examples.

cc @nagisa @rkruppe
@bors
Copy link
Contributor

bors commented Feb 8, 2020

☀️ Test successful - checks-azure
Approved by: nagisa
Pushing 85ffd44 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Feb 8, 2020
@bors bors merged commit d20e4aa into rust-lang:master Feb 8, 2020
@eddyb eddyb deleted the abi-compat-enum branch February 8, 2020 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SystemV ABI Mismatch on x86 with a repr(C) enum for extern "C"/FFI functions.
6 participants