code: func pctospadj(ctxt *Link, sym *LSym, oldval int, p *Prog, phase int, arg interface{}) int {
  	if oldval == -1 { // starting
  		oldval = 0
  	}
  	if phase == 0 {
  		return oldval
  	}
  	if int64(oldval)+p.Spadj < -10000 || int64(oldval)+p.Spadj > 1100000000 {
  		ctxt.Diag("overflow in spadj: %d + %d = %d", oldval, p.Spadj, int64(oldval)+p.Spadj)
  		log.Fatalf("bad code")
  	}
  	return int(int64(oldval) + p.Spadj)
  }
docs: // pctospadj computes the sp adjustment in effect.
  // It is oldval plus any adjustment made by p itself.
  // The adjustment by p takes effect only after p, so we
  // apply the change during phase == 1.