aboutsummaryrefslogtreecommitdiff
path: root/doc/asm.html
diff options
context:
space:
mode:
authorShenghou Ma <minux@golang.org>2015-01-08 21:43:47 -0500
committerMinux Ma <minux@golang.org>2015-02-15 00:07:11 +0000
commit7aa68756c5518e0fc2e2f65cab6b933c1c48534a (patch)
tree927b6dbf5f83a38178a3ef812e2b5be9657adca1 /doc/asm.html
parent788f78ad08a4d8a66808eb4c197521223599b063 (diff)
downloadgo-7aa68756c5518e0fc2e2f65cab6b933c1c48534a.tar.gz
go-7aa68756c5518e0fc2e2f65cab6b933c1c48534a.zip
doc/asm: document that assembly function must use short name
e.g. ·Name instead of package·Name for automatic stack map to be applied from its Go prototype. The underlying reason is that liblink look up name with suffix ".args_stackmap" for the stackmap coming from its Go prototype, but all the Go functions are named "".Name as this stage. Thus an assembly function named package·Name will never find its stackmap, which is named "".package.Name.args_stackmap. Perhaps cmd/vet should give a warning for this. Change-Id: I10d154a73ec969d574d20af877f747424350fbd1 Reviewed-on: https://go-review.googlesource.com/2588 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'doc/asm.html')
-rw-r--r--doc/asm.html6
1 files changed, 5 insertions, 1 deletions
diff --git a/doc/asm.html b/doc/asm.html
index 771c493cc2..43382fc96b 100644
--- a/doc/asm.html
+++ b/doc/asm.html
@@ -350,7 +350,11 @@ live pointers in its arguments, results, and local stack frame.
For an assembly function with no pointer results and
either no local stack frame or no function calls,
the only requirement is to define a Go prototype for the function
-in a Go source file in the same package.
+in a Go source file in the same package. The name of the assembly
+function must not contain the package name component (for example,
+function <code>Syscall</code> in package <code>syscall</code> should
+use the name <code>·Syscall</code> instead of the equivalent name
+<code>syscall·Syscall</code> in its <code>TEXT</code> directive).
For more complex situations, explicit annotation is needed.
These annotations use pseudo-instructions defined in the standard
<code>#include</code> file <code>funcdata.h</code>.