Skip to content

Investigate ARM64EC runtime test failures #5825

@StephanTLavavej

Description

@StephanTLavavej

#5831 enables ARM64EC runtime test coverage; this is a followup issue for a workaround that I had to introduce.

Baffling lld-link Mysteries

I don't understand why:

  • We're seeing these errors only for ARM64-hosted ARM64EC-targeting builds. The x64-hosted ARM64EC-targeting builds have been fine.
  • Why Clang is using lld-link here, when it seems to prefer link.exe in other contexts.
  • Why lld-link is emitting these errors.

All of these errors went away when I updated the test harness to compile with -fuse-ld=link and link with /machine:arm64ec.

lld-link: error: undefined symbol: __sanitizer_annotate_contiguous_container

~1544 occurrences.

name: std.tests/P2286R8_text_formatting_tuple
output: Build setup steps:
Build steps:
Build step failed unexpectedly.
Command: "C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\ARM64\bin\clang-cl.EXE" "C:\a\_work\1\s\tests\std\tests\P2286R8_text_formatting_tuple\test.cpp" "-IC:\stlBuild\out\inc" "-IC:\a\_work\1\s\llvm-project\libcxx\test\support" "-IC:\a\_work\1\s\tests\std\include" "/nologo" "/Od" "/W4" "/w14061" "/w14242" "/w14265" "/w14582" "/w14583" "/w14587" "/w14588" "/w14749" "/w14841" "/w14842" "/w15038" "/w15214" "/w15215" "/w15216" "/w15217" "/w15262" "/sdl" "/WX" "/D_ENABLE_STL_INTERNAL_CHECK" "/bigobj" "/FIforce_include.hpp" "/w14365" "/w14668" "/w15267" "/D_ENFORCE_FACET_SPECIALIZATIONS=1" "/w14640" "/Zc:threadSafeInit-" "/EHsc" "/std:c++latest" "-fno-ms-compatibility" "-fno-delayed-template-parsing" "-Wno-unqualified-std-cast-call" "/permissive-" "/MTd" "/fp:strict" "--start-no-unused-arguments" "--target=arm64ec-pc-windows-msvc" "-FeC:\stlBuild\tests\std\tests\P2286R8_text_formatting_tuple\Output\28\P2286R8_text_formatting_tuple.exe" "-link" "-LIBPATH:C:\stlBuild\out\lib\arm64ec" "-LIBPATH:C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.50.35717\lib\arm64" "/MANIFEST:EMBED"
Exit Code: 1 (0x1)
Standard Error:
--
lld-link: error: undefined symbol: __sanitizer_annotate_contiguous_container
>>> referenced by libcpmtd.lib(locale.cpp.obj):($LN1)
>>> referenced by libcpmtd.lib(locale.cpp.obj):($LN1)
>>> referenced by libcpmtd.lib(wlocale.cpp.obj)
clang-cl: error: linker command failed with exit code 1 (use -v to see invocation)

lld-link: error: loosefpmath.obj: machine type arm64 conflicts with arm64ec

name: std.tests/GH_000935_complex_numerical_accuracy
output: Build setup steps:
Build steps:
Build step failed unexpectedly.
Command: "C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\ARM64\bin\clang-cl.EXE" "C:\a\_work\1\s\tests\std\tests\GH_000935_complex_numerical_accuracy\test.cpp" "-IC:\stlBuild\out\inc" "-IC:\a\_work\1\s\llvm-project\libcxx\test\support" "-IC:\a\_work\1\s\tests\std\include" "/nologo" "/Od" "/W4" "/w14061" "/w14242" "/w14265" "/w14582" "/w14583" "/w14587" "/w14588" "/w14749" "/w14841" "/w14842" "/w15038" "/w15214" "/w15215" "/w15216" "/w15217" "/w15262" "/sdl" "/WX" "/D_ENABLE_STL_INTERNAL_CHECK" "/bigobj" "/FIforce_include.hpp" "/w14365" "/w14668" "/w15267" "/D_ENFORCE_FACET_SPECIALIZATIONS=1" "/FIfenv_prefix.hpp" "/w14640" "/Zc:threadSafeInit-" "/EHsc" "/std:c++latest" "/fp:strict" "/DFP_CONFIG_PRESET=1" "/DTEST_FP_ROUNDING=1" "/DWITH_FP_ABRUPT_UNDERFLOW=1" "/DFP_CONTRACT_MODE=0" "/clang:-ffp-contract=off" "-fno-ms-compatibility" "-fno-delayed-template-parsing" "-Wno-unqualified-std-cast-call" "-Wno-unused-command-line-argument" "-Wno-overriding-option" "/O2" "/MT" "--target=arm64ec-pc-windows-msvc" "-FeC:\stlBuild\tests\std\tests\GH_000935_complex_numerical_accuracy\Output\034\GH_000935_complex_numerical_accuracy.exe" "-link" "-LIBPATH:C:\stlBuild\out\lib\arm64ec" "-LIBPATH:C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.50.35717\lib\arm64" "/MANIFEST:EMBED" "loosefpmath.obj"
Exit Code: 1 (0x1)
Standard Error:
--
lld-link: error: C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.50.35717\lib\arm64\loosefpmath.obj: machine type arm64 conflicts with arm64ec
clang-cl: error: linker command failed with exit code 1 (use -v to see invocation)

Metadata

Metadata

Assignees

No one assigned

    Labels

    ARM64ECI can't believe it's not x64!testRelated to test code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions