mirror of
https://github.com/golang/go.git
synced 2025-05-14 03:44:40 +00:00
cmd/internal/obj/arm64: don't crash on trailing NOP
Fixes #20348 Change-Id: I831aeeee8e20d55b3e47dea67786e883b213cd58 Reviewed-on: https://go-review.googlesource.com/106457 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Aram Hăvărneanu <aram@mgk.ro> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
641c32264c
commit
95b4498ac0
@ -61,3 +61,21 @@ func gen(buf *bytes.Buffer) {
|
||||
fmt.Fprintln(buf, "label:")
|
||||
fmt.Fprintln(buf, "RET")
|
||||
}
|
||||
|
||||
// Issue 20348.
|
||||
func TestNoRet(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "testnoret")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(dir)
|
||||
tmpfile := filepath.Join(dir, "x.s")
|
||||
if err := ioutil.WriteFile(tmpfile, []byte("TEXT ·stub(SB),$0-0\nNOP\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", filepath.Join(dir, "x.o"), tmpfile)
|
||||
cmd.Env = []string{"GOARCH=arm64", "GOOS=linux"}
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
t.Errorf("%v\n%s", err, out)
|
||||
}
|
||||
}
|
||||
|
@ -476,9 +476,11 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
|
||||
break
|
||||
|
||||
case obj.ANOP:
|
||||
q1 = p.Link
|
||||
q.Link = q1 /* q is non-nop */
|
||||
q1.Mark |= p.Mark
|
||||
if p.Link != nil {
|
||||
q1 = p.Link
|
||||
q.Link = q1 /* q is non-nop */
|
||||
q1.Mark |= p.Mark
|
||||
}
|
||||
continue
|
||||
|
||||
case ABL,
|
||||
|
Loading…
x
Reference in New Issue
Block a user