Hi folks, I'm picking up work again on v8:10012. The goal of this work is to regularly build and test V8 for Windows on Arm under Microsoft's Visual C++ Compiler (MSVC), because downstream projects (in particular Node.js) use this compiler.I've run into a problem with the mkgrokdump utility. Basically, it links with embedded.o (assembled from host_x64/gen/embedded.S), which is generated by the mksnapshot utility. When building with Clang, mksnapshot emits assembly directives compatible with all platforms (and therefore there's no issue). Microsoft's assemblers however don't support this syntax, and there are incompatible differences between the syntax accepted by their i386/x64 assembler and their ARM64 assembler. So mksnapshot emits ARM64 assembly, GN tries to assemble it with the x64 assembler (for linking with mkgrokdump) and and the assembler reports >10000 errors as a result.So based on what I think mkgrokdump does (initialize from the snapshot_blob.bin, enumerate heap constants and export them for another scripts) is there a reason why it has to statically link with embedded.o?
Or would it be preferable to keep the build setup as it is and change mksnapshot so it can emit either syntax?
Are there more possibilities that we should investigate? I'd appreciate any design input you have on the most workable solution.
--BestRichard
--
v8-dev mailing list
v8-...@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/f2e3e89e-ac47-432b-9fb5-00c65350cbfa%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-...@googlegroups.com.
OK, following up on this after a few more experiments:
- It does not appear to be very easy to remove the host mkgrokdump from the dependency chain.
- Emitting target-specific assembly via the runtime flag does appear to work and resolve the issue. However, Arm's internal V8 team are concerned that removing all compile-time defines is potentially a large change to the way mksnapshot works and would prefer to resolve the structural dependency issue.
- If the structural issue is resolved and mkgrokdump is statically linked against embedded-empty.cc, various debug / runtime assertions fire when mkgrokdump is invoked. I presume those asserts (including stuff like IsolateIsCompatibleWithEmbeddedBlob) are there for a reason so I need to think a bit more about what the effect of removing them is.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/8eba1c5e-0a25-4f37-95d5-866e3814681a%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/8eba1c5e-0a25-4f37-95d5-866e3814681a%40googlegroups.com.