Repository navigation
build: configure macOS arm64 TinyCC with --config-new_macho=no - #118
Merged
medvednikov merged 1 commit intoOct 29, 2026
Conversation
TCC's chained fixups list the zero-fill __bss pages in __DATA's page_count, and macOS 27 dyld maps them from the file, so tcc-linked programs can start with garbage in their globals (vlang/v#29744). V's own recipe (thirdparty/build_scripts/thirdparty-macos-arm64_tcc.sh) already uses --config-new_macho=no, and vlang/v#31382 validated a TinyCC 85ba3ae8 build with that setting. This makes the tccbin recipe match it. The page_count patch stays applied; it only affects chained-fixups builds. The manifest's recipe.sha256 is updated to the new build.sh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
medvednikov
reviewed
Oct 29, 2026
medvednikov
left a comment
Member
There was a problem hiding this comment.
Reviewed 9f204adc0da67d9852f1904031649960a23f0b5b, ignoring CI as requested.
No actionable issues found in this recipe-only change.
Checks performed:
- Confirmed that
--config-new_macho=noand the retained--config-codesignmatch V's arm64 recipe used by #31382. - Checked the recorded TinyCC revision
85ba3ae8: the flag selectsLC_DYLD_INFO_ONLY, while code signing remains independently enabled. The retained page-count patch affects the chained-fixups path, consistent with the revised comments. - Ran
bash -n build.shsuccessfully. - Recomputed the exact script SHA-256:
5237a3f2ff5a3816fc6958cf2e41220e0375833ae380e63686be34dd99f142ad, matchingrecipe.sha256. Confirmed that this digest is the manifest's only semantic change.
Release follow-up: as the description states, tcc.exe is unchanged. A rebuilt and published bundle is still needed to deliver the fix to users and satisfy the corrected-bundle requirement described in vlang/v#31382.
Validation was limited to source review, shell syntax, and manifest integrity. I did not run a native macOS build or runtime tests in this Linux environment.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Configure the macOS arm64 TinyCC build with
--config-new_macho=no, matching V's own recipe(
thirdparty/build_scripts/thirdparty-macos-arm64_tcc.sh) and the build thatvlang/v#31382 validated.
With
--config-new_macho=yes, TCC writes chained fixups whosepage_countalso lists thezero-fill
__bsspages. macOS 27 dyld maps those pages from the file, so tcc-linked programscan start with garbage in their globals (vlang/v#29744). vlang/v#31382 measured 13,567 nonzero
BSS bytes with the currently published
tcc.exeand listed publishing a corrected bundle as amerge prerequisite. Its validated build used TinyCC
85ba3ae8withnew_macho=no.Changes:
build.sh:--config-new_macho=yes→no, with a comment explaining why. The page_countpatch stays applied; its comment now says it only affects chained-fixups builds.
automation/bundle-manifest.json:recipe.sha256updated to the newbuild.sh.This PR changes the recipe only. The checked-in
tcc.exeis not rebuilt here.Verification
bash -n build.shautomation/probes/baseline-contract.sh) with a validatorbootstrapped from contract
9ba76b64and its VC lock (0781dbf8):tccbin baseline contract target=macos-arm64 staged=incomplete smoke=v-tcc publish=false: PASSon this commit, and on the current head
9792dedas a control.Test plan
buildon this PR passestccbin-branch-gatepasses🤖 Generated with Claude Code