Hi, Sergey,
Thanks for updates, LGTM
Hi, Sergey! Thanks for the review! See my answers below. On 26.11.25, Sergey Bronnikov wrote:Hi, Sergey, thanks for the patch! LGTM with a minor comment. Sergey On 11/24/25 23:26, Sergey Kaplun wrote:From: Mike Pall <mike> Thanks to Carlo Cabrera. (cherry picked from commit b2915e9ab55b999429b4d1931097064c4e17de53) The previous commit removes emitting the `.subsections_via_symbols` [1] directive for macOS. Nevertheless, the aforementioned Xcode linker versions produce incorrect code for the VM without this directive. As a fix for old versions of macOS, this patch adds emitting thisI would add exact macOS versions, according to [1] it is: 15000000 1.As discussed offline, this is exactly the problem with the Xcode version, and this macro specifies the corresponding Xcode versions.https://stackoverflow.com/questions/19387043/how-can-i-reliably-detect-the-version-of-clang-at-preprocessing-time#comment137533353_19391724directive in the buildvm. [1]:https://reviews.llvm.org/D79926 Sergey Kaplun: * added the description for the problem Part of tarantool/tarantool#11691I've added the link to the machO format as you suggested: | macOS: Workaround for buggy XCode 15.0 - 15.2 linker. | | Thanks to Carlo Cabrera. | | (cherry picked from commit b2915e9ab55b999429b4d1931097064c4e17de53) | | The previous commit removes emitting the `.subsections_via_symbols` | [1][2] directive for macOS. Nevertheless, the aforementioned Xcode linker | versions produce incorrect code for the VM without this directive. | | As a fix for old versions of macOS, this patch adds emitting this | directive in the buildvm. | | [1]: https://reviews.llvm.org/D79926 | [2]: https://github.com/aidansteele/osx-abi-macho-file-format-reference | | Sergey Kaplun: | * added the description for the problem | | Part of tarantool/tarantool#11691--- src/host/buildvm_asm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/host/buildvm_asm.c b/src/host/buildvm_asm.c index 43595b31..fc09d71a 100644 --- a/src/host/buildvm_asm.c +++ b/src/host/buildvm_asm.c @@ -347,6 +347,10 @@ void emit_asm(BuildCtx *ctx) fprintf(ctx->fp, "\t.ident \"%s\"\n", ctx->dasm_ident); break; case BUILD_machasm: +#if defined(__apple_build_version__) && __apple_build_version__ >= 15000000 && __apple_build_version__ < 15000300 + /* Workaround for XCode 15.0 - 15.2. */__apple_build_version__ defines a macOS version. But macOS 15 includes XCode 16, see [2], not 15.x So there is an inconsistency in condition and comment. I would list macOS versions in a comment like this "Workaround for macOS 15, 15.1 and 15.2" to avoid misinterpretation due to non-strict inequality with 15000300. Also, I would include a link to [2] to the commit message. 2. https://developer.apple.com/documentation/macos-release-notes/macos-15-release-notesThe same about the comment above.+ fprintf(ctx->fp, "\t.subsections_via_symbols\n"); +#endif fprintf(ctx->fp, "\t.cstring\n" "\t.ascii \"%s\\0\"\n", ctx->dasm_ident);