aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/asm
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2016-02-29 13:31:48 -0800
committerKeith Randall <khr@golang.org>2016-02-29 13:32:20 -0800
commit4fffd4569d321feeceb1daf73595155e049bc1c4 (patch)
tree60b1a5a80a498b9baa5258a50845c092e8d51ea4 /src/cmd/asm
parent4e95dfed0197ee6fdf96dc1aa632297a28a1cd95 (diff)
parent71cc445cf92dd3014e8b382809ed1b9c077e7973 (diff)
downloadgo-4fffd4569d321feeceb1daf73595155e049bc1c4.tar.xz
[dev.ssa] Merge remote-tracking branch 'origin/master' into ssamerge
(Last?) Semi-regular merge from tip to dev.ssa. Conflicts: src/cmd/compile/internal/gc/closure.go src/cmd/compile/internal/gc/gsubr.go src/cmd/compile/internal/gc/lex.go src/cmd/compile/internal/gc/pgen.go src/cmd/compile/internal/gc/syntax.go src/cmd/compile/internal/gc/walk.go src/cmd/internal/obj/pass.go Change-Id: Ib5ea8bf74d420f4902a9c6208761be9f22371ae7
Diffstat (limited to 'src/cmd/asm')
-rw-r--r--src/cmd/asm/doc.go2
-rw-r--r--src/cmd/asm/internal/asm/endtoend_test.go2
-rw-r--r--src/cmd/asm/internal/asm/parse.go25
-rw-r--r--src/cmd/asm/internal/asm/pseudo_test.go4
-rw-r--r--src/cmd/asm/internal/asm/testdata/arm64.s2
-rw-r--r--src/cmd/asm/internal/flags/flags.go2
-rw-r--r--src/cmd/asm/internal/lex/input.go2
-rw-r--r--src/cmd/asm/internal/lex/lex.go2
-rw-r--r--src/cmd/asm/main.go4
9 files changed, 25 insertions, 20 deletions
diff --git a/src/cmd/asm/doc.go b/src/cmd/asm/doc.go
index a9c8bfb7db..aa62147957 100644
--- a/src/cmd/asm/doc.go
+++ b/src/cmd/asm/doc.go
@@ -20,7 +20,7 @@ The GOOS and GOARCH environment variables set the desired target.
Flags:
-D value
- predefined symbol with optional simple value -D=identifer=value;
+ predefined symbol with optional simple value -D=identifier=value;
can be set multiple times
-I value
include directory; can be set multiple times
diff --git a/src/cmd/asm/internal/asm/endtoend_test.go b/src/cmd/asm/internal/asm/endtoend_test.go
index 4bc7e2fb74..4a3e0ee265 100644
--- a/src/cmd/asm/internal/asm/endtoend_test.go
+++ b/src/cmd/asm/internal/asm/endtoend_test.go
@@ -179,7 +179,7 @@ Diff:
t.Errorf(format, args...)
ok = false
}
- obj.Flushplist(ctxt)
+ obj.FlushplistNoFree(ctxt)
for p := top; p != nil; p = p.Link {
if p.As == obj.ATEXT {
diff --git a/src/cmd/asm/internal/asm/parse.go b/src/cmd/asm/internal/asm/parse.go
index 4258c5ce26..6c324ce3af 100644
--- a/src/cmd/asm/internal/asm/parse.go
+++ b/src/cmd/asm/internal/asm/parse.go
@@ -297,7 +297,7 @@ func (p *Parser) operand(a *obj.Addr) bool {
p.errorf("illegal use of register list")
}
p.registerList(a)
- p.expect(scanner.EOF)
+ p.expectOperandEnd()
return true
}
@@ -331,7 +331,7 @@ func (p *Parser) operand(a *obj.Addr) bool {
}
}
// fmt.Printf("REG %s\n", obj.Dconv(&emptyProg, 0, a))
- p.expect(scanner.EOF)
+ p.expectOperandEnd()
return true
}
@@ -363,7 +363,7 @@ func (p *Parser) operand(a *obj.Addr) bool {
a.Type = obj.TYPE_FCONST
a.Val = p.floatExpr()
// fmt.Printf("FCONST %s\n", obj.Dconv(&emptyProg, 0, a))
- p.expect(scanner.EOF)
+ p.expectOperandEnd()
return true
}
if p.have(scanner.String) {
@@ -378,7 +378,7 @@ func (p *Parser) operand(a *obj.Addr) bool {
a.Type = obj.TYPE_SCONST
a.Val = str
// fmt.Printf("SCONST %s\n", obj.Dconv(&emptyProg, 0, a))
- p.expect(scanner.EOF)
+ p.expectOperandEnd()
return true
}
a.Offset = int64(p.expr())
@@ -392,7 +392,7 @@ func (p *Parser) operand(a *obj.Addr) bool {
a.Type = obj.TYPE_MEM
}
// fmt.Printf("CONST %d %s\n", a.Offset, obj.Dconv(&emptyProg, 0, a))
- p.expect(scanner.EOF)
+ p.expectOperandEnd()
return true
}
// fmt.Printf("offset %d \n", a.Offset)
@@ -402,7 +402,7 @@ func (p *Parser) operand(a *obj.Addr) bool {
p.registerIndirect(a, prefix)
// fmt.Printf("DONE %s\n", p.arch.Dconv(&emptyProg, 0, a))
- p.expect(scanner.EOF)
+ p.expectOperandEnd()
return true
}
@@ -983,14 +983,19 @@ func (p *Parser) more() bool {
// get verifies that the next item has the expected type and returns it.
func (p *Parser) get(expected lex.ScanToken) lex.Token {
- p.expect(expected)
+ p.expect(expected, expected.String())
return p.next()
}
+// expectOperandEnd verifies that the parsing state is properly at the end of an operand.
+func (p *Parser) expectOperandEnd() {
+ p.expect(scanner.EOF, "end of operand")
+}
+
// expect verifies that the next item has the expected type. It does not consume it.
-func (p *Parser) expect(expected lex.ScanToken) {
- if p.peek() != expected {
- p.errorf("expected %s, found %s", expected, p.next())
+func (p *Parser) expect(expectedToken lex.ScanToken, expectedMessage string) {
+ if p.peek() != expectedToken {
+ p.errorf("expected %s, found %s", expectedMessage, p.next())
}
}
diff --git a/src/cmd/asm/internal/asm/pseudo_test.go b/src/cmd/asm/internal/asm/pseudo_test.go
index ee13b724eb..2e6d6c8154 100644
--- a/src/cmd/asm/internal/asm/pseudo_test.go
+++ b/src/cmd/asm/internal/asm/pseudo_test.go
@@ -35,8 +35,8 @@ func TestErroneous(t *testing.T) {
{"TEXT", "%", "expect two or three operands for TEXT"},
{"TEXT", "1, 1", "TEXT symbol \"<erroneous symbol>\" must be a symbol(SB)"},
{"TEXT", "$\"foo\", 0, $1", "TEXT symbol \"<erroneous symbol>\" must be a symbol(SB)"},
- {"TEXT", "$0É:0, 0, $1", "expected EOF, found É"}, // Issue #12467.
- {"TEXT", "$:0:(SB, 0, $1", "expected '(', found 0"}, // Issue 12468.
+ {"TEXT", "$0É:0, 0, $1", "expected end of operand, found É"}, // Issue #12467.
+ {"TEXT", "$:0:(SB, 0, $1", "expected '(', found 0"}, // Issue 12468.
{"FUNCDATA", "", "expect two operands for FUNCDATA"},
{"FUNCDATA", "(SB ", "expect two operands for FUNCDATA"},
{"DATA", "", "expect two operands for DATA"},
diff --git a/src/cmd/asm/internal/asm/testdata/arm64.s b/src/cmd/asm/internal/asm/testdata/arm64.s
index 22d430631c..6466da7190 100644
--- a/src/cmd/asm/internal/asm/testdata/arm64.s
+++ b/src/cmd/asm/internal/asm/testdata/arm64.s
@@ -237,7 +237,7 @@ again:
//
// LSTXR reg ',' addr ',' reg
// {
-// outtcode($1, &$2, &$4, &$6);
+// outcode($1, &$2, &$4, &$6);
// }
LDAXRW (R0), R2
STLXRW R1, (R0), R3
diff --git a/src/cmd/asm/internal/flags/flags.go b/src/cmd/asm/internal/flags/flags.go
index 9f3c3bfc1d..4557c2a7f9 100644
--- a/src/cmd/asm/internal/flags/flags.go
+++ b/src/cmd/asm/internal/flags/flags.go
@@ -29,7 +29,7 @@ var (
)
func init() {
- flag.Var(&D, "D", "predefined symbol with optional simple value -D=identifer=value; can be set multiple times")
+ flag.Var(&D, "D", "predefined symbol with optional simple value -D=identifier=value; can be set multiple times")
flag.Var(&I, "I", "include directory; can be set multiple times")
}
diff --git a/src/cmd/asm/internal/lex/input.go b/src/cmd/asm/internal/lex/input.go
index 33b9d8adea..4855daa892 100644
--- a/src/cmd/asm/internal/lex/input.go
+++ b/src/cmd/asm/internal/lex/input.go
@@ -30,7 +30,7 @@ type Input struct {
peekText string
}
-// NewInput returns a
+// NewInput returns an Input from the given path.
func NewInput(name string) *Input {
return &Input{
// include directories: look in source dir, then -I directories.
diff --git a/src/cmd/asm/internal/lex/lex.go b/src/cmd/asm/internal/lex/lex.go
index 6fce55f7f4..81339059b1 100644
--- a/src/cmd/asm/internal/lex/lex.go
+++ b/src/cmd/asm/internal/lex/lex.go
@@ -77,7 +77,7 @@ func NewLexer(name string, ctxt *obj.Link) TokenReader {
input := NewInput(name)
fd, err := os.Open(name)
if err != nil {
- log.Fatalf("asm: %s\n", err)
+ log.Fatalf("%s\n", err)
}
input.Push(NewTokenizer(name, fd, fd))
return input
diff --git a/src/cmd/asm/main.go b/src/cmd/asm/main.go
index f48050c137..4e450bec98 100644
--- a/src/cmd/asm/main.go
+++ b/src/cmd/asm/main.go
@@ -26,7 +26,7 @@ func main() {
architecture := arch.Set(GOARCH)
if architecture == nil {
- log.Fatalf("asm: unrecognized architecture %s", GOARCH)
+ log.Fatalf("unrecognized architecture %s", GOARCH)
}
flags.Parse()
@@ -66,7 +66,7 @@ func main() {
obj.Writeobjdirect(ctxt, output)
}
if !ok || diag {
- log.Printf("asm: assembly of %s failed", flag.Arg(0))
+ log.Printf("assembly of %s failed", flag.Arg(0))
os.Remove(*flags.OutputFile)
os.Exit(1)
}