Skip to content

Commit

Permalink
[release-branch.go1.21] cmd/link: disable DWARF by default in c-share…
Browse files Browse the repository at this point in the history
…d mode on darwin

[This is a (manual) backport of CL 527415 to Go 1.21.]

Currently, linking a Go c-shared object with C code using Apple's
new linker, it fails with

% cc a.c go.so
ld: segment '__DWARF' filesize exceeds vmsize in 'go.so'

Apple's new linker has more checks for unmapped segments. It is
very hard to make it accept a Mach-O shared object with an
additional DWARF segment.

We may want to stop combinding DWARF into the shared object (see
also golang#62577). For now, disable DWARF by default in c-shared mode
on darwin.

Updates golang#61229.
For golang#62598.

Change-Id: I525987b7fe1a4e64571327cb4696f98cc7b419a1
Reviewed-on: https://go-review.googlesource.com/c/go/+/527816
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
  • Loading branch information
cherrymui authored and bradfitz committed Sep 25, 2023
1 parent 68d159f commit 9d6d233
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/cmd/link/internal/ld/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,10 @@ func Main(arch *sys.Arch, theArch Arch) {

checkStrictDups = *FlagStrictDups

if ctxt.IsDarwin() && ctxt.BuildMode == BuildModeCShared {
*FlagW = true // default to -w in c-shared mode on darwin, see #61229
}

if !buildcfg.Experiment.RegabiWrappers {
abiInternalVer = 0
}
Expand Down

0 comments on commit 9d6d233

Please sign in to comment.