From 4af08e7a13f2423f689c74d0c0ed79165b639e1e Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Fri, 6 Apr 2018 21:02:01 -0400 Subject: [PATCH] cmd/link: set S_ATTR_PURE_INSTRUCTIONS bit for text section on darwin Mac otool and llvm-objdump distinguishes a Mach-O section is text or data by looking at S_ATTR_PURE_INSTRUCTIONS bit. Without this bit it thinks our function symbols are data, not functions. Set this bit for text section to make otool/objdump happy. Fixes #24706. Change-Id: I5236482cb9a72474c23fbea0f35d5b5cc8491ea4 Reviewed-on: https://go-review.googlesource.com/105256 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/link/internal/ld/macho.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go index 12037069c8..db933a6767 100644 --- a/src/cmd/link/internal/ld/macho.go +++ b/src/cmd/link/internal/ld/macho.go @@ -438,6 +438,10 @@ func machoshbits(ctxt *Link, mseg *MachoSeg, sect *sym.Section, segname string) msect.flag |= S_ATTR_SOME_INSTRUCTIONS } + if sect.Name == ".text" { + msect.flag |= S_ATTR_PURE_INSTRUCTIONS + } + if sect.Name == ".plt" { msect.name = "__symbol_stub1" msect.flag = S_ATTR_PURE_INSTRUCTIONS | S_ATTR_SOME_INSTRUCTIONS | S_SYMBOL_STUBS -- 2.50.0