diff options
author | Kai Backman <kaib@golang.org> | 2009-10-25 11:59:58 -0700 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2009-10-25 11:59:58 -0700 |
commit | 05a73062b114311cba6d7794bf595619eaec5bb3 (patch) | |
tree | 1f09c84ba44eb064719c02859a9de9dc2afc9fe5 | |
parent | c1858a969764eeda67852ceeaa2820ceb9d21f9f (diff) | |
download | golang-05a73062b114311cba6d7794bf595619eaec5bb3.tar.gz |
make 5l ignore multiple defs, remove use of multiple
defs from embed1 and gotest
R=rsc
http://go/go-review/1014009
-rw-r--r-- | src/cmd/5l/obj.c | 9 | ||||
-rwxr-xr-x | src/cmd/gotest/gotest | 8 | ||||
-rw-r--r-- | test/interface/embed1.go | 2 |
3 files changed, 17 insertions, 2 deletions
diff --git a/src/cmd/5l/obj.c b/src/cmd/5l/obj.c index 45751e8c5..805d39544 100644 --- a/src/cmd/5l/obj.c +++ b/src/cmd/5l/obj.c @@ -432,9 +432,11 @@ ldobj1(Biobuf *f, int64 len, char *pn) int v, o, r, skip; uint32 sig; char *name; + int ntext; int32 eof; char src[1024]; + ntext = 0; eof = Boffset(f) + len; di = S; src[0] = 0; @@ -657,6 +659,13 @@ loop: break; case ATEXT: + s = p->from.sym; + if(ntext++ == 0 && s->type != 0 && s->type != SXREF) { + /* redefinition, so file has probably been seen before */ + if(debug['v']) + Bprint(&bso, "skipping: %s: redefinition: %s", pn, s->name); + return; + } setarch(p); setthumb(p); p->align = 4; diff --git a/src/cmd/gotest/gotest b/src/cmd/gotest/gotest index 212abbf75..e274ef9b8 100755 --- a/src/cmd/gotest/gotest +++ b/src/cmd/gotest/gotest @@ -22,6 +22,12 @@ nacl) E="nacl" esac +# TODO(kaib): proper emulator strategy +case x"$GOARCH" in +xarm) + E="qemu-arm -cpu cortex-a8" +esac + # Allow overrides GC=${_GC:-$GC} GL=${GL:-$LD} @@ -131,5 +137,5 @@ importpath=$(make -s importpath) }>_testmain.go $GC _testmain.go -$GL _testmain.$O _test/$importpath.a $xofile +$GL _testmain.$O $E ./$O.out "$@" diff --git a/test/interface/embed1.go b/test/interface/embed1.go index b3fe06f47..6e15031ea 100644 --- a/test/interface/embed1.go +++ b/test/interface/embed1.go @@ -1,4 +1,4 @@ -// $G $D/embed0.go && $G $D/$F.go && $L embed0.$A $F.$A && ./$A.out +// $G $D/embed0.go && $G $D/$F.go && $L $F.$A && ./$A.out // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style |