diff options
| author | Cherry Mui <cherryyz@google.com> | 2023-09-11 15:53:49 -0400 |
|---|---|---|
| committer | Cherry Mui <cherryyz@google.com> | 2023-09-12 15:31:24 +0000 |
| commit | e924ea03cc7651cffdec9636a0d79d54eb6e7e0d (patch) | |
| tree | 6e14e19b13c22427f27afd60fcd3f9d83e40e9f2 /src/cmd | |
| parent | 905b58b5377e8f542590a46a3c90146ab45a6c96 (diff) | |
| download | go-e924ea03cc7651cffdec9636a0d79d54eb6e7e0d.tar.xz | |
cmd/link: disable DWARF by default in c-shared mode on darwin
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 #62577). For now, disable DWARF by default in c-shared mode
on darwin. (One can still enable it with -ldflags=-w=0, which will
contain DWARF, but it will need the old C linker to link against
with.)
For #61229.
Change-Id: I4cc77da54fac10e2c2cbcffa92779cba82706d75
Reviewed-on: https://go-review.googlesource.com/c/go/+/527415
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd')
| -rw-r--r-- | src/cmd/link/internal/ld/main.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go index ccc7d29bf2..aa6c00ce88 100644 --- a/src/cmd/link/internal/ld/main.go +++ b/src/cmd/link/internal/ld/main.go @@ -245,6 +245,9 @@ func Main(arch *sys.Arch, theArch Arch) { *FlagW = true case ternaryFlagUnset: *FlagW = *FlagS // -s implies -w if not explicitly set + if ctxt.IsDarwin() && ctxt.BuildMode == BuildModeCShared { + *FlagW = true // default to -w in c-shared mode on darwin, see #61229 + } } if !buildcfg.Experiment.RegabiWrappers { |
