Commit 4af08e7a authored by Cherry Zhang's avatar Cherry Zhang

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 <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent ea5825b0
...@@ -438,6 +438,10 @@ func machoshbits(ctxt *Link, mseg *MachoSeg, sect *sym.Section, segname string) ...@@ -438,6 +438,10 @@ func machoshbits(ctxt *Link, mseg *MachoSeg, sect *sym.Section, segname string)
msect.flag |= S_ATTR_SOME_INSTRUCTIONS msect.flag |= S_ATTR_SOME_INSTRUCTIONS
} }
if sect.Name == ".text" {
msect.flag |= S_ATTR_PURE_INSTRUCTIONS
}
if sect.Name == ".plt" { if sect.Name == ".plt" {
msect.name = "__symbol_stub1" msect.name = "__symbol_stub1"
msect.flag = S_ATTR_PURE_INSTRUCTIONS | S_ATTR_SOME_INSTRUCTIONS | S_SYMBOL_STUBS msect.flag = S_ATTR_PURE_INSTRUCTIONS | S_ATTR_SOME_INSTRUCTIONS | S_SYMBOL_STUBS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment