Skip to content

Compilation issues with RHEL8-arm64 and recent V8 #3595

Open

Description

@targos

V8 11.9, on test-equinix-rhel8_container-arm64-1 (GCC 10.3.1): https://ci.nodejs.org/job/node-test-commit-arm/50511/nodes=rhel8-arm64/console

Details
12:31:12   ccache g++ -o /home/iojs/build/workspace/node-test-commit-arm/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/heap/base/memory-tagging.o ../deps/v8/src/heap/base/memory-tagging.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DNODE_OPENSSL_HAS_QUIC' '-DICU_NO_USER_DATA_OVERRIDE' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DV8_TARGET_ARCH_ARM64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_LINUX' '-DV8_EMBEDDER_STRING="-node.11"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DV8_SHARED_RO_HEAP' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_USE_ZLIB' '-DV8_ENABLE_TURBOFAN' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ENABLE_JAVASCRIPT_PROMISE_HOOKS' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_ADVANCED_BIGINT_ALGORITHMS' '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_STATIC_IMPLEMENTATION=1' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/v8 -I../deps/v8/include -I/home/iojs/build/workspace/node-test-commit-arm/out/Release/obj/gen/inspector-generated-output-root -I../deps/v8/third_party/inspector_protocol -I/home/iojs/build/workspace/node-test-commit-arm/out/Release/obj/gen -I/home/iojs/build/workspace/node-test-commit-arm/out/Release/obj/gen/generate-bytecode-output-root -I../deps/icu-small/source/i18n -I../deps/icu-small/source/common -I../deps/v8/third_party/zlib -I../deps/v8/third_party/zlib/google  -msign-return-address=all -pthread -Wno-unused-parameter -Wno-return-type -Wno-invalid-offsetof -fno-strict-aliasing -O3 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF /home/iojs/build/workspace/node-test-commit-arm/out/Release/.deps//home/iojs/build/workspace/node-test-commit-arm/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/heap/base/memory-tagging.o.d.raw   -c
12:31:13 g++: warning: switch '-msign-return-address=all' is no longer supported
12:31:13 /tmp/ccxx9WKm.s: Assembler messages:
12:31:13 /tmp/ccxx9WKm.s:32: Error: unknown architectural extension `memtag'
12:31:13 /tmp/ccxx9WKm.s:32: Error: unknown or missing system register name at operand 1 -- `msr tco,#1'
12:31:13 /tmp/ccxx9WKm.s:81: Error: unknown architectural extension `memtag'
12:31:13 /tmp/ccxx9WKm.s:81: Error: unknown or missing system register name at operand 2 -- `mrs x1,tco'
12:31:13 /tmp/ccxx9WKm.s:89: Error: unknown architectural extension `memtag'
12:31:13 /tmp/ccxx9WKm.s:89: Error: unknown or missing system register name at operand 1 -- `msr tco,#0'
12:31:13 make[2]: *** [tools/v8_gypfiles/v8_base_without_compiler.target.mk:1096: /home/iojs/build/workspace/node-test-commit-arm/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/heap/base/memory-tagging.o] Error 1

V8 canary, on release-osuosl-rhel8-arm64-1 (GCC 10.3.1): https://ci-release.nodejs.org/job/iojs+release/9842/nodes=rhel8-arm64-release/console

Details
11:08:41   ccache g++ -o /home/iojs/build/ws/out/Release/obj.target/v8_compiler/deps/v8/src/compiler/access-builder.o ../deps/v8/src/compiler/access-builder.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DNODE_OPENSSL_HAS_QUIC' '-DICU_NO_USER_DATA_OVERRIDE' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DV8_TARGET_ARCH_ARM64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_LINUX' '-DV8_EMBEDDER_STRING="-node.6"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DV8_SHARED_RO_HEAP' '-DNDEBUG' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_USE_ZLIB' '-DV8_ENABLE_SPARKPLUG' '-DV8_ENABLE_TURBOFAN' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ENABLE_JAVASCRIPT_PROMISE_HOOKS' '-DV8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_ADVANCED_BIGINT_ALGORITHMS' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_STATIC_IMPLEMENTATION=1' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/v8 -I../deps/v8/include -I/home/iojs/build/ws/out/Release/obj/gen/generate-bytecode-output-root -I/home/iojs/build/ws/out/Release/obj/gen -I../deps/icu-small/source/i18n -I../deps/icu-small/source/common -I../deps/v8/third_party/abseil-cpp  -msign-return-address=all -pthread -Wno-unused-parameter -Wno-return-type -Wno-invalid-offsetof -fno-strict-aliasing -O3 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF /home/iojs/build/ws/out/Release/.deps//home/iojs/build/ws/out/Release/obj.target/v8_compiler/deps/v8/src/compiler/access-builder.o.d.raw   -c
11:09:14 g++: warning: switch ‘-msign-return-address=all’ is no longer supported
11:09:14 In file included from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
11:09:14                  from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
11:09:14                  from ../deps/v8/src/codegen/register-arch.h:15,
11:09:14                  from ../deps/v8/src/codegen/register.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/translated-state.h:11,
11:09:14                  from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-frames.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-evaluate.h:12,
11:09:14                  from ../deps/v8/src/init/setup-isolate-full.cc:6:
11:09:14 ../deps/v8/src/utils/utils.h: In instantiation of ‘bool v8::internal::SimdMemEqual(const Char*, const Char*, size_t) [with Char = unsigned char; size_t = long unsigned int]’:
11:09:14 ../deps/v8/src/utils/utils.h:400:26:   required from ‘bool v8::internal::CompareCharsEqualUnsigned(const lchar*, const rchar*, size_t) [with lchar = unsigned char; rchar = unsigned char; size_t = long unsigned int]’
11:09:14 ../deps/v8/src/utils/utils.h:418:35:   required from ‘bool v8::internal::CompareCharsEqual(const lchar*, const rchar*, size_t) [with lchar = unsigned char; rchar = char; size_t = long unsigned int]’
11:09:14 ../deps/v8/src/objects/string-inl.h:555:33:   required from ‘bool v8::internal::String::IsEqualToImpl(v8::base::Vector<const Char>, v8::internal::PtrComprCageBase, const v8::internal::SharedStringAccessGuardIfNeeded&) const [with v8::internal::String::EqualityType kEqType = v8::internal::String::EqualityType::kWholeString; Char = char]’
11:09:14 ../deps/v8/src/objects/string-inl.h:518:32:   required from ‘bool v8::internal::String::IsEqualTo(v8::base::Vector<const Char>) const [with v8::internal::String::EqualityType kEqType = v8::internal::String::EqualityType::kWholeString; Char = char]’
11:09:14 ../deps/v8/src/objects/string-inl.h:640:23:   required from here
11:09:14 ../deps/v8/src/utils/utils.h:368:47: note: use ‘-flax-vector-conversions’ to permit conversions between vectors with differing element types or numbers of subparts
11:09:14   368 |       return !static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(ored, ored), 0));
11:09:14       |                                 ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
11:09:14 ../deps/v8/src/utils/utils.h:368:57: error: cannot convert ‘uint8x16_t’ to ‘uint64x2_t’
11:09:14   368 |       return !static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(ored, ored), 0));
11:09:14       |                                                ~~~~~~~~~^~~~~~~~~~~~
11:09:14       |                                                         |
11:09:14       |                                                         uint8x16_t
11:09:14 In file included from ../deps/v8/src/utils/utils.h:35,
11:09:14                  from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
11:09:14                  from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
11:09:14                  from ../deps/v8/src/codegen/register-arch.h:15,
11:09:14                  from ../deps/v8/src/codegen/register.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/translated-state.h:11,
11:09:14                  from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-frames.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-evaluate.h:12,
11:09:14                  from ../deps/v8/src/init/setup-isolate-full.cc:6:
11:09:14 /opt/rh/gcc-toolset-10/root/usr/lib/gcc/aarch64-redhat-linux/10/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
11:09:14  3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
11:09:14       |                 ~~~~~~~~~~~^~~
11:09:14 In file included from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
11:09:14                  from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
11:09:14                  from ../deps/v8/src/codegen/register-arch.h:15,
11:09:14                  from ../deps/v8/src/codegen/register.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/translated-state.h:11,
11:09:14                  from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-frames.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-evaluate.h:12,
11:09:14                  from ../deps/v8/src/init/setup-isolate-full.cc:6:
11:09:14 ../deps/v8/src/utils/utils.h:375:53: error: cannot convert ‘uint8x16_t’ to ‘uint64x2_t’
11:09:14   375 |       if (static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(xored, xored), 0)))
11:09:14       |                                            ~~~~~~~~~^~~~~~~~~~~~~~
11:09:14       |                                                     |
11:09:14       |                                                     uint8x16_t
11:09:14 In file included from ../deps/v8/src/utils/utils.h:35,
11:09:14                  from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
11:09:14                  from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
11:09:14                  from ../deps/v8/src/codegen/register-arch.h:15,
11:09:14                  from ../deps/v8/src/codegen/register.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/translated-state.h:11,
11:09:14                  from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-frames.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-evaluate.h:12,
11:09:14                  from ../deps/v8/src/init/setup-isolate-full.cc:6:
11:09:14 /opt/rh/gcc-toolset-10/root/usr/lib/gcc/aarch64-redhat-linux/10/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
11:09:14  3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
11:09:14       |                 ~~~~~~~~~~~^~~
11:09:14 In file included from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
11:09:14                  from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
11:09:14                  from ../deps/v8/src/codegen/register-arch.h:15,
11:09:14                  from ../deps/v8/src/codegen/register.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/translated-state.h:11,
11:09:14                  from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-frames.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-evaluate.h:12,
11:09:14                  from ../deps/v8/src/init/setup-isolate-full.cc:6:
11:09:14 ../deps/v8/src/utils/utils.h:382:55: error: cannot convert ‘uint8x16_t’ to ‘uint64x2_t’
11:09:14   382 |         if (static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(xored, xored), 0)))
11:09:14       |                                              ~~~~~~~~~^~~~~~~~~~~~~~
11:09:14       |                                                       |
11:09:14       |                                                       uint8x16_t
11:09:14 In file included from ../deps/v8/src/utils/utils.h:35,
11:09:14                  from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
11:09:14                  from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
11:09:14                  from ../deps/v8/src/codegen/register-arch.h:15,
11:09:14                  from ../deps/v8/src/codegen/register.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
11:09:14                  from ../deps/v8/src/deoptimizer/translated-state.h:11,
11:09:14                  from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-frames.h:10,
11:09:14                  from ../deps/v8/src/debug/debug-evaluate.h:12,
11:09:14                  from ../deps/v8/src/init/setup-isolate-full.cc:6:
11:09:14 /opt/rh/gcc-toolset-10/root/usr/lib/gcc/aarch64-redhat-linux/10/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
11:09:14  3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
11:09:14       |                 ~~~~~~~~~~~^~~
11:09:14 make[2]: *** [tools/v8_gypfiles/v8_init.target.mk:175: /home/iojs/build/ws/out/Release/obj.target/v8_init/deps/v8/src/init/setup-isolate-full.o] Error 1
11:09:14 make[2]: *** Waiting for unfinished jobs....
11:09:18 g++: warning: switch ‘-msign-return-address=all’ is no longer supported
11:09:18 In file included from ../deps/v8/src/objects/field-index.h:11,
11:09:18                  from ../deps/v8/src/objects/objects.h:26,
11:09:18                  from ../deps/v8/src/objects/tagged-value.h:8,
11:09:18                  from ../deps/v8/src/objects/tagged-field.h:10,
11:09:18                  from ../deps/v8/src/objects/heap-object.h:11,
11:09:18                  from ../deps/v8/src/heap/marking.h:12,
11:09:18                  from ../deps/v8/src/heap/basic-memory-chunk.h:16,
11:09:18                  from ../deps/v8/src/heap/memory-chunk.h:14,
11:09:18                  from ../deps/v8/src/common/code-memory-access.h:15,
11:09:18                  from ../deps/v8/src/codegen/reloc-info.h:9,
11:09:18                  from ../deps/v8/src/compiler/common-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/js-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/access-builder.h:9,
11:09:18                  from ../deps/v8/src/compiler/access-builder.cc:5:
11:09:18 ../deps/v8/src/utils/utils.h: In instantiation of ‘bool v8::internal::SimdMemEqual(const Char*, const Char*, size_t) [with Char = unsigned char; size_t = long unsigned int]’:
11:09:18 ../deps/v8/src/utils/utils.h:400:26:   required from ‘bool v8::internal::CompareCharsEqualUnsigned(const lchar*, const rchar*, size_t) [with lchar = unsigned char; rchar = unsigned char; size_t = long unsigned int]’
11:09:18 ../deps/v8/src/utils/utils.h:418:35:   required from ‘bool v8::internal::CompareCharsEqual(const lchar*, const rchar*, size_t) [with lchar = unsigned char; rchar = char; size_t = long unsigned int]’
11:09:18 ../deps/v8/src/objects/string-inl.h:555:33:   required from ‘bool v8::internal::String::IsEqualToImpl(v8::base::Vector<const Char>, v8::internal::PtrComprCageBase, const v8::internal::SharedStringAccessGuardIfNeeded&) const [with v8::internal::String::EqualityType kEqType = v8::internal::String::EqualityType::kWholeString; Char = char]’
11:09:18 ../deps/v8/src/objects/string-inl.h:518:32:   required from ‘bool v8::internal::String::IsEqualTo(v8::base::Vector<const Char>) const [with v8::internal::String::EqualityType kEqType = v8::internal::String::EqualityType::kWholeString; Char = char]’
11:09:18 ../deps/v8/src/objects/string-inl.h:640:23:   required from here
11:09:18 ../deps/v8/src/utils/utils.h:368:47: note: use ‘-flax-vector-conversions’ to permit conversions between vectors with differing element types or numbers of subparts
11:09:18   368 |       return !static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(ored, ored), 0));
11:09:18       |                                 ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
11:09:18 ../deps/v8/src/utils/utils.h:368:57: error: cannot convert ‘uint8x16_t’ to ‘uint64x2_t’
11:09:18   368 |       return !static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(ored, ored), 0));
11:09:18       |                                                ~~~~~~~~~^~~~~~~~~~~~
11:09:18       |                                                         |
11:09:18       |                                                         uint8x16_t
11:09:18 In file included from ../deps/v8/src/utils/utils.h:35,
11:09:18                  from ../deps/v8/src/objects/field-index.h:11,
11:09:18                  from ../deps/v8/src/objects/objects.h:26,
11:09:18                  from ../deps/v8/src/objects/tagged-value.h:8,
11:09:18                  from ../deps/v8/src/objects/tagged-field.h:10,
11:09:18                  from ../deps/v8/src/objects/heap-object.h:11,
11:09:18                  from ../deps/v8/src/heap/marking.h:12,
11:09:18                  from ../deps/v8/src/heap/basic-memory-chunk.h:16,
11:09:18                  from ../deps/v8/src/heap/memory-chunk.h:14,
11:09:18                  from ../deps/v8/src/common/code-memory-access.h:15,
11:09:18                  from ../deps/v8/src/codegen/reloc-info.h:9,
11:09:18                  from ../deps/v8/src/compiler/common-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/js-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/access-builder.h:9,
11:09:18                  from ../deps/v8/src/compiler/access-builder.cc:5:
11:09:18 /opt/rh/gcc-toolset-10/root/usr/lib/gcc/aarch64-redhat-linux/10/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
11:09:18  3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
11:09:18       |                 ~~~~~~~~~~~^~~
11:09:18 In file included from ../deps/v8/src/objects/field-index.h:11,
11:09:18                  from ../deps/v8/src/objects/objects.h:26,
11:09:18                  from ../deps/v8/src/objects/tagged-value.h:8,
11:09:18                  from ../deps/v8/src/objects/tagged-field.h:10,
11:09:18                  from ../deps/v8/src/objects/heap-object.h:11,
11:09:18                  from ../deps/v8/src/heap/marking.h:12,
11:09:18                  from ../deps/v8/src/heap/basic-memory-chunk.h:16,
11:09:18                  from ../deps/v8/src/heap/memory-chunk.h:14,
11:09:18                  from ../deps/v8/src/common/code-memory-access.h:15,
11:09:18                  from ../deps/v8/src/codegen/reloc-info.h:9,
11:09:18                  from ../deps/v8/src/compiler/common-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/js-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/access-builder.h:9,
11:09:18                  from ../deps/v8/src/compiler/access-builder.cc:5:
11:09:18 ../deps/v8/src/utils/utils.h:375:53: error: cannot convert ‘uint8x16_t’ to ‘uint64x2_t’
11:09:18   375 |       if (static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(xored, xored), 0)))
11:09:18       |                                            ~~~~~~~~~^~~~~~~~~~~~~~
11:09:18       |                                                     |
11:09:18       |                                                     uint8x16_t
11:09:18 In file included from ../deps/v8/src/utils/utils.h:35,
11:09:18                  from ../deps/v8/src/objects/field-index.h:11,
11:09:18                  from ../deps/v8/src/objects/objects.h:26,
11:09:18                  from ../deps/v8/src/objects/tagged-value.h:8,
11:09:18                  from ../deps/v8/src/objects/tagged-field.h:10,
11:09:18                  from ../deps/v8/src/objects/heap-object.h:11,
11:09:18                  from ../deps/v8/src/heap/marking.h:12,
11:09:18                  from ../deps/v8/src/heap/basic-memory-chunk.h:16,
11:09:18                  from ../deps/v8/src/heap/memory-chunk.h:14,
11:09:18                  from ../deps/v8/src/common/code-memory-access.h:15,
11:09:18                  from ../deps/v8/src/codegen/reloc-info.h:9,
11:09:18                  from ../deps/v8/src/compiler/common-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/js-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/access-builder.h:9,
11:09:18                  from ../deps/v8/src/compiler/access-builder.cc:5:
11:09:18 /opt/rh/gcc-toolset-10/root/usr/lib/gcc/aarch64-redhat-linux/10/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
11:09:18  3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
11:09:18       |                 ~~~~~~~~~~~^~~
11:09:18 In file included from ../deps/v8/src/objects/field-index.h:11,
11:09:18                  from ../deps/v8/src/objects/objects.h:26,
11:09:18                  from ../deps/v8/src/objects/tagged-value.h:8,
11:09:18                  from ../deps/v8/src/objects/tagged-field.h:10,
11:09:18                  from ../deps/v8/src/objects/heap-object.h:11,
11:09:18                  from ../deps/v8/src/heap/marking.h:12,
11:09:18                  from ../deps/v8/src/heap/basic-memory-chunk.h:16,
11:09:18                  from ../deps/v8/src/heap/memory-chunk.h:14,
11:09:18                  from ../deps/v8/src/common/code-memory-access.h:15,
11:09:18                  from ../deps/v8/src/codegen/reloc-info.h:9,
11:09:18                  from ../deps/v8/src/compiler/common-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/js-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/access-builder.h:9,
11:09:18                  from ../deps/v8/src/compiler/access-builder.cc:5:
11:09:18 ../deps/v8/src/utils/utils.h:382:55: error: cannot convert ‘uint8x16_t’ to ‘uint64x2_t’
11:09:18   382 |         if (static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(xored, xored), 0)))
11:09:18       |                                              ~~~~~~~~~^~~~~~~~~~~~~~
11:09:18       |                                                       |
11:09:18       |                                                       uint8x16_t
11:09:18 In file included from ../deps/v8/src/utils/utils.h:35,
11:09:18                  from ../deps/v8/src/objects/field-index.h:11,
11:09:18                  from ../deps/v8/src/objects/objects.h:26,
11:09:18                  from ../deps/v8/src/objects/tagged-value.h:8,
11:09:18                  from ../deps/v8/src/objects/tagged-field.h:10,
11:09:18                  from ../deps/v8/src/objects/heap-object.h:11,
11:09:18                  from ../deps/v8/src/heap/marking.h:12,
11:09:18                  from ../deps/v8/src/heap/basic-memory-chunk.h:16,
11:09:18                  from ../deps/v8/src/heap/memory-chunk.h:14,
11:09:18                  from ../deps/v8/src/common/code-memory-access.h:15,
11:09:18                  from ../deps/v8/src/codegen/reloc-info.h:9,
11:09:18                  from ../deps/v8/src/compiler/common-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/js-operator.h:10,
11:09:18                  from ../deps/v8/src/compiler/access-builder.h:9,
11:09:18                  from ../deps/v8/src/compiler/access-builder.cc:5:
11:09:18 /opt/rh/gcc-toolset-10/root/usr/lib/gcc/aarch64-redhat-linux/10/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
11:09:18  3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
11:09:18       |                 ~~~~~~~~~~~^~~
11:09:18 make[2]: *** [tools/v8_gypfiles/v8_compiler.target.mk:313: /home/iojs/build/ws/out/Release/obj.target/v8_compiler/deps/v8/src/compiler/access-builder.o] Error 1

Activity

  1. richardlau commented on Dec 18, 2023

    @richardlau
    Member

    V8 11.9, on test-equinix-rhel8_container-arm64-1 (GCC 10.3.1): https://ci.nodejs.org/job/node-test-commit-arm/50511/nodes=rhel8-arm64/console

    12:31:12   ccache g++ -o /home/iojs/build/workspace/node-test-commit-arm/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/heap/base/memory-tagging.o ../deps/v8/src/heap/base/memory-tagging.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DNODE_OPENSSL_HAS_QUIC' '-DICU_NO_USER_DATA_OVERRIDE' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DV8_TARGET_ARCH_ARM64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_LINUX' '-DV8_EMBEDDER_STRING="-node.11"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DV8_SHARED_RO_HEAP' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_USE_ZLIB' '-DV8_ENABLE_TURBOFAN' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ENABLE_JAVASCRIPT_PROMISE_HOOKS' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_ADVANCED_BIGINT_ALGORITHMS' '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_STATIC_IMPLEMENTATION=1' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/v8 -I../deps/v8/include -I/home/iojs/build/workspace/node-test-commit-arm/out/Release/obj/gen/inspector-generated-output-root -I../deps/v8/third_party/inspector_protocol -I/home/iojs/build/workspace/node-test-commit-arm/out/Release/obj/gen -I/home/iojs/build/workspace/node-test-commit-arm/out/Release/obj/gen/generate-bytecode-output-root -I../deps/icu-small/source/i18n -I../deps/icu-small/source/common -I../deps/v8/third_party/zlib -I../deps/v8/third_party/zlib/google  -msign-return-address=all -pthread -Wno-unused-parameter -Wno-return-type -Wno-invalid-offsetof -fno-strict-aliasing -O3 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF /home/iojs/build/workspace/node-test-commit-arm/out/Release/.deps//home/iojs/build/workspace/node-test-commit-arm/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/heap/base/memory-tagging.o.d.raw   -c
    12:31:13 g++: warning: switch '-msign-return-address=all' is no longer supported
    12:31:13 /tmp/ccxx9WKm.s: Assembler messages:
    12:31:13 /tmp/ccxx9WKm.s:32: Error: unknown architectural extension `memtag'
    12:31:13 /tmp/ccxx9WKm.s:32: Error: unknown or missing system register name at operand 1 -- `msr tco,#1'
    12:31:13 /tmp/ccxx9WKm.s:81: Error: unknown architectural extension `memtag'
    12:31:13 /tmp/ccxx9WKm.s:81: Error: unknown or missing system register name at operand 2 -- `mrs x1,tco'
    12:31:13 /tmp/ccxx9WKm.s:89: Error: unknown architectural extension `memtag'
    12:31:13 /tmp/ccxx9WKm.s:89: Error: unknown or missing system register name at operand 1 -- `msr tco,#0'
    12:31:13 make[2]: *** [tools/v8_gypfiles/v8_base_without_compiler.target.mk:1096: /home/iojs/build/workspace/node-test-commit-arm/out/Release/obj.target/v8_base_without_compiler/deps/v8/src/heap/base/memory-tagging.o] Error 1
    

    Given that https://ci.nodejs.org/job/node-test-commit-arm/50511/nodes=ubuntu2004-arm64/ succeeded I'm wondering if this is an issue with gas (2.30 on rhel-arm64 vs 2.34 on ubuntu2004-arm64). Or if, for some reason, the arm architecture is being detected differently between the two environments -- according to https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html memtag is armv8.5-a.

  2. richardlau commented on Dec 18, 2023

    @richardlau
    Member

    We'll probably need to add at least the gcc-toolset-10 version of bintutils to

    RUN dnf install --disableplugin=subscription-manager -y \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-gcc-10.3.1-1.2.el8_5.{{ ansible_architecture }}.rpm \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-gcc-c++-10.3.1-1.2.el8_5.{{ ansible_architecture }}.rpm \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-libstdc++-devel-10.3.1-1.2.el8_5.{{ ansible_architecture }}.rpm \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-runtime-10.1-0.el8.{{ ansible_architecture }}.rpm

    which should bring us up to binutils 2.35.

  3. richardlau commented on Dec 18, 2023

    @richardlau
    Member

    We'll probably need to add at least the gcc-toolset-10 version of bintutils to

    RUN dnf install --disableplugin=subscription-manager -y \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-gcc-10.3.1-1.2.el8_5.{{ ansible_architecture }}.rpm \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-gcc-c++-10.3.1-1.2.el8_5.{{ ansible_architecture }}.rpm \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-libstdc++-devel-10.3.1-1.2.el8_5.{{ ansible_architecture }}.rpm \
    http://mirror.centos.org/centos/8-stream/AppStream/{{ ansible_architecture }}/os/Packages/gcc-toolset-10-runtime-10.1-0.el8.{{ ansible_architecture }}.rpm

    which should bring us up to binutils 2.35.

    PR (untested): #3596

  4. richardlau commented on Dec 19, 2023

    @richardlau
    Member

    Given that https://ci.nodejs.org/job/node-test-commit-arm/50511/nodes=ubuntu2004-arm64/ succeeded I'm wondering if this is an issue with gas (2.30 on rhel-arm64 vs 2.34 on ubuntu2004-arm64).

    Looks very much likely to be the version of binutils. Compare:

    It appears that memtag was added in binutils 2.32: https://sourceware.org/binutils/docs-2.32/as/AArch64-Extensions.html

  5. targos commented on Dec 20, 2023

    @targos
    MemberAuthor

    For the second issue, I tried to force gcc-11 on the release machine and rebuild. The error is still here:

    /opt/rh/gcc-toolset-11/root/usr/lib/gcc/aarch64-redhat-linux/11/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
     3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
          |                 ~~~~~~~~~~~^~~
    In file included from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
                     from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
                     from ../deps/v8/src/codegen/register-arch.h:15,
                     from ../deps/v8/src/codegen/register.h:8,
                     from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
                     from ../deps/v8/src/deoptimizer/translated-state.h:11,
                     from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
                     from ../deps/v8/src/debug/debug-frames.h:10,
                     from ../deps/v8/src/debug/debug-evaluate.h:12,
                     from ../deps/v8/src/init/setup-isolate-full.cc:6:
    ../deps/v8/src/utils/utils.h:382:55: error: cannot convert ‘uint8x16_t’ to ‘uint64x2_t’
      382 |         if (static_cast<bool>(vgetq_lane_u64(vpmaxq_u8(xored, xored), 0)))
          |                                              ~~~~~~~~~^~~~~~~~~~~~~~
          |                                                       |
          |                                                       uint8x16_t
    In file included from ../deps/v8/src/utils/utils.h:35,
                     from ../deps/v8/src/codegen/arm64/utils-arm64.h:11,
                     from ../deps/v8/src/codegen/arm64/register-arm64.h:8,
                     from ../deps/v8/src/codegen/register-arch.h:15,
                     from ../deps/v8/src/codegen/register.h:8,
                     from ../deps/v8/src/deoptimizer/frame-translation-builder.h:8,
                     from ../deps/v8/src/deoptimizer/translated-state.h:11,
                     from ../deps/v8/src/deoptimizer/deoptimized-frame-info.h:10,
                     from ../deps/v8/src/debug/debug-frames.h:10,
                     from ../deps/v8/src/debug/debug-evaluate.h:12,
                     from ../deps/v8/src/init/setup-isolate-full.cc:6:
    /opt/rh/gcc-toolset-11/root/usr/lib/gcc/aarch64-redhat-linux/11/include/arm_neon.h:3353:28: note:   initializing argument 1 of ‘uint64_t vgetq_lane_u64(uint64x2_t, int)’
     3353 | vgetq_lane_u64 (uint64x2_t __a, const int __b)
          |                 ~~~~~~~~~~~^~~
    make[2]: *** [tools/v8_gypfiles/v8_init.target.mk:175: /home/iojs/build/ws/out/Release/obj.target/v8_init/deps/v8/src/init/setup-isolate-full.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    rm e7ac66b173ee32d531dfaec321cef4818b3e57e7.intermediate 97b3b35c0261bedd03bbbab54f6b138f20a11b4f.intermediate 0d2ce10ea44d84275198a857d5f920d0af8bab0c.intermediate
    make[1]: *** [Makefile:134: node] Error 2
    make: *** [Makefile:1248: node-v22.0.0-v8-canary20231219736a807b7a-linux-arm64.tar] Error 2
    [iojs@release-osuosl-rhel8-arm64-1 ws]$ gcc --version
    

    We're also experiencing an issue on GitHub actions with today's canary build (GCC 11 is the default compiler on GH runners too): https://github.com/nodejs/node-v8/actions/runs/7271603973?check_suite_focus=true

    In file included from /usr/include/unistd.h:226,
                     from ../deps/v8/third_party/abseil-cpp/absl/base/internal/thread_identity.h:27,
                     from ../deps/v8/third_party/abseil-cpp/absl/synchronization/mutex.h:71,
                     from ../deps/v8/third_party/abseil-cpp/absl/strings/internal/cordz_info.h:31,
                     from ../deps/v8/third_party/abseil-cpp/absl/strings/cord.h:91,
                     from ../deps/v8/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h:56,
                     from ../deps/v8/third_party/abseil-cpp/absl/container/flat_hash_map.h:41,
                     from ../deps/v8/src/zone/zone-containers.h:20,
                     from ../deps/v8/src/compiler/code-assembler.h:30,
                     from ../deps/v8/src/codegen/code-stub-assembler.h:15,
                     from ../deps/v8/src/builtins/builtins-iterator-gen.h:8,
                     from ../deps/v8/src/builtins/builtins-intl-gen.cc:9:
    ../deps/v8/src/builtins/builtins-intl-gen.cc: In member function ‘v8::internal::TNode<v8::internal::Uint8T> v8::internal::IntlBuiltinsAssembler::GetChar(v8::internal::TNode<v8::internal::SeqOneByteString>, int)’:
    ../deps/v8/src/builtins/builtins-intl-gen.cc:43:43: error: ‘index’ is not a constant expression
       43 |         offsetof(SeqOneByteString, chars_[index]) - kHeapObjectTag;
          |                                           ^~~~~
    make[1]: *** [tools/v8_gypfiles/v8_initializers.target.mk:468: /home/runner/work/node-v8/node-v8/node-v8/out/Release/obj.target/v8_initializers/deps/v8/src/builtins/builtins-intl-gen.o] Error 1
    

    We'll probably have to bump GCC to 12 or 13 for the next major.

  6. targos commented on Dec 22, 2023

    @targos
    MemberAuthor

    I wonder if the solution may be to add -flax-vector-conversions as suggested by the error message. Maybe Clang doesn't have this requirement.

  7. targos commented on Dec 22, 2023

    @targos
    MemberAuthor

    Here's a full CI to get more info: https://ci.nodejs.org/job/node-test-commit/67540/

  8. targos commented on Dec 22, 2023

    @targos
    MemberAuthor
  9. targos commented on Dec 22, 2023

    @targos
    MemberAuthor

    First issue fixed by #3596
    Second issue fixed by nodejs/node#51257

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions