aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/doc/function-names.rst
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/go/doc/function-names.rst')
-rw-r--r--gcc/go/doc/function-names.rst61
1 files changed, 0 insertions, 61 deletions
diff --git a/gcc/go/doc/function-names.rst b/gcc/go/doc/function-names.rst
deleted file mode 100644
index 1ed5760..0000000
--- a/gcc/go/doc/function-names.rst
+++ /dev/null
@@ -1,61 +0,0 @@
-..
- Copyright 1988-2022 Free Software Foundation, Inc.
- This is part of the GCC manual.
- For copying conditions, see the copyright.rst file.
-
-.. index:: extern, external names
-
-.. _function-names:
-
-Function Names
-**************
-
-Go code can call C functions directly using the ``//extern`` or
-``//go:linkname`` compiler directives. An ``//extern``
-directive must be at the beginning of the line and must start with
-``//extern``. This must be followed by a space and then the
-external name of the function. The function declaration must be on
-the line immediately after the comment. For example, here is how the
-C function ``open`` can be declared in Go:
-
-.. code-block:: c++
-
- //extern open
- func c_open(name *byte, mode int, perm int) int
-
-You can do the same thing using the ``//go:linkname`` compiler
-directive. The ``//go:linkname`` directive must be at the start of
-the line. It is followed by whitespace, the name of the Go function,
-more whitespace, and the external name of the function. Unlike
-``//extern``, ``//go:linkname`` does not need to appear
-immediately adjacent to the function definition or declaration.
-
-.. code-block:: c++
-
- //go:linkname c_open open
- func c_open(name *byte, mode int, perm int) int
-
-The C function naturally expects a nul terminated string, which in Go
-is equivalent to a pointer to an array (not a slice!) of ``byte``
-with a terminating zero byte. So a sample call from Go would look
-like (after importing the ``os`` package):
-
-.. code-block:: c++
-
- var name = [4]byte{'f', 'o', 'o', 0};
- i := c_open(&name[0], os.O_RDONLY, 0);
-
-Note that this serves as an example only. To open a file in Go please
-use Go's ``os.Open`` function instead.
-
-The name of Go functions accessed from C is subject to change. At
-present the name of a Go function that does not have a receiver is
-``pkgpath.Functionname``. The :samp:`{pkgpath}` is set by the
-:option:`-fgo-pkgpath` option used when the package is compiled; if the
-option is not used, the default is ``go.packagename``. To
-call the function from C you must set the name using the :command:`gcc`
-``__asm__`` extension.
-
-.. code-block:: c++
-
- extern int go_function(int) __asm__ ("mypkgpath.Function"); \ No newline at end of file