diff options
author | Russ Cox <rsc@golang.org> | 2009-08-24 16:15:21 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-08-24 16:15:21 -0700 |
commit | f4dc57372297bb1301f744e390a578540448240f (patch) | |
tree | a65fa19b965ad5b4c2a0bacc21bb06f03a8bdd95 /src/cmd/ld/go.c | |
parent | 52b2c5d91b902d0a90d489b3759eb4edaead3709 (diff) | |
download | go-f4dc57372297bb1301f744e390a578540448240f.tar.gz |
first attempt at real FFI support.
in a .6 file, an export line
//ffi T localfib remotefib remote.so
means the dynamic linker should initialize
localfib, always a pointer, to the address of
remotefib, either text (T) or data (D) after
loading remote.so.
the C compiler will generate an export section
when given the pragmas
#pragma package fib
#pragma ffi T localfib remotefib remote.so
needing #pragma package is a bit of a kludge
and hopefully could go away later.
this is just the 6 tool chain support.
other architectures will happen once 6 settles down.
code using this to do FFI is in a later CL.
R=r
DELTA=161 (141 added, 14 deleted, 6 changed)
OCL=33783
CL=33795
Diffstat (limited to 'src/cmd/ld/go.c')
-rw-r--r-- | src/cmd/ld/go.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/cmd/ld/go.c b/src/cmd/ld/go.c index 4bad52413..b4b75b19b 100644 --- a/src/cmd/ld/go.c +++ b/src/cmd/ld/go.c @@ -102,7 +102,7 @@ ldpkg(Biobuf *f, int64 len, char *filename) while(*p0 == ' ' || *p0 == '\t' || *p0 == '\n') p0++; if(strncmp(p0, "package ", 8) != 0) { - fprint(2, "%s: bad package section in %s\n", argv0, filename); + fprint(2, "%s: bad package section in %s - %s\n", argv0, filename, p0); return; } p0 += 8; @@ -200,8 +200,6 @@ again: // prefix: (var|type|func|const) prefix = p; - - prefix = p; if(p + 6 > ep) return -1; if(strncmp(p, "var ", 4) == 0) @@ -251,7 +249,7 @@ again: goto again; } else { err: - fprint(2, "%s: confused in pkg data near <<%.20s>>\n", argv0, prefix); + fprint(2, "%s: confused in pkg data near <<%.40s>>\n", argv0, prefix); nerrors++; return -1; } |