Bug 22942 – Invalid section type / offset for newer XCode versions

Status
RESOLVED
Resolution
FIXED
Severity
blocker
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
Mac OS X
Creation time
2022-03-26T16:39:11Z
Last change time
2022-03-27T02:24:36Z
Keywords
backend, link-failure, pull
Assigned to
No Owner
Creator
moonlightsentinel

Comments

Comment #0 by moonlightsentinel — 2022-03-26T16:39:11Z
Linking programs on MacOS using newer XCode versions (>= 13.3) fails with an error like this: ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '../generated/build.o' for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Taken from https://cirrus-ci.com/task/5812771504783360?logs=build#L43
Comment #1 by dlang-bot — 2022-03-26T16:41:44Z
@MoonlightSentinel updated dlang/dmd pull request #13890 "[Ignore] Debug failures for OSX on Cirrus" fixing this issue: - CirrusCI: Use ldc instead of dmd for MacOs >= 12 DMD releases cannot compile for XCode >= 13.3 because of issue 22942. - Fix 22942 - Check for S_TRHEAD_LOCAL_ZEROFILL alongside S_ZEROFILL The code generated an unexpected / invalid header for the `thread_bss` section marked as `S_TRHEAD_LOCAL_ZEROFILL`. The generated object file is rejected by ld included in newer XCode versions (>= 13.3). E.g. ``` ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '../generated/build.o' for architecture x86_64 ``` This patch changes the existing code to treat `S_TRHEAD_LOCAL_ZEROFILL` like `S_ZEROFILL` w.r.t. the section size. https://github.com/dlang/dmd/pull/13890
Comment #2 by paolo.invernizzi — 2022-03-26T18:08:10Z
*** Issue 22890 has been marked as a duplicate of this issue. ***
Comment #3 by dlang-bot — 2022-03-27T00:47:44Z
dlang/dmd pull request #13890 "Fix 22942 - Check for S_TRHEAD_LOCAL_ZEROFILL alongside S_ZEROFILL" was merged into stable: - dc63f521db4158e28f58323437ba61bb91078087 by MoonlightSentinel: CirrusCI: Temporarily use ldc instead of dmd for MacOs >= 12 DMD releases cannot compile for XCode >= 13.3 because of issue 22942. - 08ff0600f4ddbc0cf285ee9e5633656183766f20 by MoonlightSentinel: Fix 22942 - Check for S_TRHEAD_LOCAL_ZEROFILL alongside S_ZEROFILL The code generated an unexpected / invalid header for the `thread_bss` section marked as `S_TRHEAD_LOCAL_ZEROFILL`. The generated object file is rejected by ld included in newer XCode versions (>= 13.3). E.g. ``` ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '../generated/build.o' for architecture x86_64 ``` This patch changes the existing code to treat `S_TRHEAD_LOCAL_ZEROFILL` like `S_ZEROFILL` w.r.t. the section size. https://github.com/dlang/dmd/pull/13890
Comment #4 by dlang-bot — 2022-03-27T02:24:36Z
dlang/dmd pull request #13892 "Merge stable into master" was merged into master: - 25b8666e690d6b50c59937040ae0f201ae3ef9d9 by MoonlightSentinel: CirrusCI: Temporarily use ldc instead of dmd for MacOs >= 12 DMD releases cannot compile for XCode >= 13.3 because of issue 22942. - d06857e5cf430a566b78264a1635149ce864ed88 by MoonlightSentinel: Fix 22942 - Check for S_TRHEAD_LOCAL_ZEROFILL alongside S_ZEROFILL The code generated an unexpected / invalid header for the `thread_bss` section marked as `S_TRHEAD_LOCAL_ZEROFILL`. The generated object file is rejected by ld included in newer XCode versions (>= 13.3). E.g. ``` ld: section __DATA/__thread_bss has type zero-fill but non-zero file offset file '../generated/build.o' for architecture x86_64 ``` This patch changes the existing code to treat `S_TRHEAD_LOCAL_ZEROFILL` like `S_ZEROFILL` w.r.t. the section size. https://github.com/dlang/dmd/pull/13892