aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2015-03-05 10:39:23 -0800
committerRob Pike <r@golang.org>2015-03-05 19:18:46 +0000
commit24a43e6a7542c2aefd1e2f16f0daae8100e4bdce (patch)
tree7102dfdd47ef77116daca5f9a6ed106a0f681d31 /src/cmd/internal
parentd5b5d6702ad7d64f189c915225b945a2aa471a38 (diff)
downloadgo-24a43e6a7542c2aefd1e2f16f0daae8100e4bdce.tar.xz
cmd/internal/obj: delete all Pconv, replace with Prog.String
Remove the per-achitecture formatter for Prog and replace it with a global String method. Clean up and regularize the output. Update tests affected by the format; some tests are made correct now when they were broken before (and known to be). Also, related: Change the encoding of the (R1+R2) syntax on ppc64 to be equivalent to (R1)(R2*1), which means it needs no special handling. Delete the now unused STRINGSZ constant. Change-Id: I7f6654d11f80065f3914a3f19353f2f12edfe310 Reviewed-on: https://go-review.googlesource.com/6931 Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/cmd/internal')
-rw-r--r--src/cmd/internal/asm/asm.go1
-rw-r--r--src/cmd/internal/gc/go.go26
-rw-r--r--src/cmd/internal/obj/arm/5.out.go3
-rw-r--r--src/cmd/internal/obj/arm/list5.go61
-rw-r--r--src/cmd/internal/obj/arm/obj5.go1
-rw-r--r--src/cmd/internal/obj/link.go12
-rw-r--r--src/cmd/internal/obj/ppc64/asm9.go41
-rw-r--r--src/cmd/internal/obj/ppc64/list9.go79
-rw-r--r--src/cmd/internal/obj/ppc64/obj9.go2
-rw-r--r--src/cmd/internal/obj/util.go82
-rw-r--r--src/cmd/internal/obj/x86/list6.go48
-rw-r--r--src/cmd/internal/obj/x86/obj6.go3
12 files changed, 116 insertions, 243 deletions
diff --git a/src/cmd/internal/asm/asm.go b/src/cmd/internal/asm/asm.go
index 151a8a5926..b67b4d717c 100644
--- a/src/cmd/internal/asm/asm.go
+++ b/src/cmd/internal/asm/asm.go
@@ -81,7 +81,6 @@ const (
EOF = -1
IGN = -2
NHASH = 503
- STRINGSZ = 200
NMACRO = 10
)
diff --git a/src/cmd/internal/gc/go.go b/src/cmd/internal/gc/go.go
index bab3373680..aa0ac8481b 100644
--- a/src/cmd/internal/gc/go.go
+++ b/src/cmd/internal/gc/go.go
@@ -20,16 +20,19 @@ import (
// or bison will check for its definition and use
// a potentially smaller value if it is undefined.
const (
- NHUNK = 50000
- BUFSIZ = 8192
- NSYMB = 500
- NHASH = 1024
- STRINGSZ = 200
- MAXALIGN = 7
- UINF = 100
- PRIME1 = 3
- AUNK = 100
- AMEM = 0 + iota - 9
+ NHUNK = 50000
+ BUFSIZ = 8192
+ NSYMB = 500
+ NHASH = 1024
+ MAXALIGN = 7
+ UINF = 100
+ PRIME1 = 3
+ BADWIDTH = -1000000000
+ MaxStackVarSize = 10 * 1024 * 1024
+)
+
+const (
+ AMEM = iota
AMEM0
AMEM8
AMEM16
@@ -51,8 +54,7 @@ const (
AFLOAT64
ACPLX64
ACPLX128
- BADWIDTH = -1000000000
- MaxStackVarSize = 10 * 1024 * 1024
+ AUNK = 100
)
const (
diff --git a/src/cmd/internal/obj/arm/5.out.go b/src/cmd/internal/obj/arm/5.out.go
index 91e96874f0..424dd3d58e 100644
--- a/src/cmd/internal/obj/arm/5.out.go
+++ b/src/cmd/internal/obj/arm/5.out.go
@@ -32,9 +32,6 @@ package arm
import "cmd/internal/obj"
-// TODO(ality): remove this workaround.
-// It's here because Pconv in liblink/list?.c references %L.
-
const (
NSNAME = 8
NSYM = 50
diff --git a/src/cmd/internal/obj/arm/list5.go b/src/cmd/internal/obj/arm/list5.go
index 321c1f8583..bb2ac20e53 100644
--- a/src/cmd/internal/obj/arm/list5.go
+++ b/src/cmd/internal/obj/arm/list5.go
@@ -35,67 +35,6 @@ import (
"fmt"
)
-const (
- STRINGSZ = 1000
-)
-
-var extra = []string{
- ".EQ",
- ".NE",
- ".CS",
- ".CC",
- ".MI",
- ".PL",
- ".VS",
- ".VC",
- ".HI",
- ".LS",
- ".GE",
- ".LT",
- ".GT",
- ".LE",
- "",
- ".NV",
-}
-
-var bigP *obj.Prog
-
-func Pconv(p *obj.Prog) string {
- a := int(p.As)
- s := int(p.Scond)
- sc := extra[(s&C_SCOND)^C_SCOND_XOR]
- if s&C_SBIT != 0 {
- sc += ".S"
- }
- if s&C_PBIT != 0 {
- sc += ".P"
- }
- if s&C_WBIT != 0 {
- sc += ".W"
- }
- if s&C_UBIT != 0 { /* ambiguous with FBIT */
- sc += ".U"
- }
- var str string
- if a == obj.ADATA {
- str = fmt.Sprintf("%.5d (%v)\t%v\t%v/%d,%v",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From), p.From3.Offset, obj.Dconv(p, &p.To))
- } else if p.As == obj.ATEXT {
- str = fmt.Sprintf("%.5d (%v)\t%v\t%v,%d,%v",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From), p.From3.Offset, obj.Dconv(p, &p.To))
- } else if p.Reg == 0 {
- str = fmt.Sprintf("%.5d (%v)\t%v%s\t%v,%v",
- p.Pc, p.Line(), obj.Aconv(a), sc, obj.Dconv(p, &p.From), obj.Dconv(p, &p.To))
- } else {
- str = fmt.Sprintf("%.5d (%v)\t%v%s\t%v,%v,%v",
- p.Pc, p.Line(), obj.Aconv(a), sc, obj.Dconv(p, &p.From), Rconv(int(p.Reg)), obj.Dconv(p, &p.To))
- }
-
- var fp string
- fp += str
- return fp
-}
-
func init() {
obj.RegisterRegister(obj.RBaseARM, MAXREG, Rconv)
obj.RegisterOpcode(obj.ABaseARM, Anames)
diff --git a/src/cmd/internal/obj/arm/obj5.go b/src/cmd/internal/obj/arm/obj5.go
index ca464b6de6..7c28add64a 100644
--- a/src/cmd/internal/obj/arm/obj5.go
+++ b/src/cmd/internal/obj/arm/obj5.go
@@ -1045,7 +1045,6 @@ var unaryDst = map[int]bool{
var Linkarm = obj.LinkArch{
ByteOrder: binary.LittleEndian,
- Pconv: Pconv,
Name: "arm",
Thechar: '5',
Preprocess: preprocess,
diff --git a/src/cmd/internal/obj/link.go b/src/cmd/internal/obj/link.go
index a41da83c86..bcec3c2e63 100644
--- a/src/cmd/internal/obj/link.go
+++ b/src/cmd/internal/obj/link.go
@@ -234,7 +234,6 @@ type Plist struct {
}
type LinkArch struct {
- Pconv func(*Prog) string
ByteOrder binary.ByteOrder
Name string
Thechar int
@@ -382,7 +381,16 @@ type Pciter struct {
// offset = bit mask of registers in list; R0 is low bit.
//
// reg, reg
-// TYPE_REGREG2, to be removed.
+// Register pair for ARM.
+// TYPE_REGREG2
+//
+// (reg+reg)
+// Register pair for PPC64.
+// Encoding:
+// type = TYPE_MEM
+// reg = first register
+// index = second register
+// scale = 1
//
const (
diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go
index 77ffec8dc3..9e227c427d 100644
--- a/src/cmd/internal/obj/ppc64/asm9.go
+++ b/src/cmd/internal/obj/ppc64/asm9.go
@@ -604,7 +604,7 @@ func aclass(ctxt *obj.Link, a *obj.Addr) int {
}
return C_LAUTO
- case obj.TYPE_NONE:
+ case obj.NAME_NONE:
ctxt.Instoffset = a.Offset
if ctxt.Instoffset == 0 {
return C_ZOREG
@@ -1579,11 +1579,11 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
r = int(o.param)
}
v := regoff(ctxt, &p.To)
- if p.To.Type == obj.TYPE_MEM && p.Reg != 0 {
+ if p.To.Type == obj.TYPE_MEM && p.To.Index != 0 {
if v != 0 {
ctxt.Diag("illegal indexed instruction\n%v", p)
}
- o1 = AOP_RRR(uint32(opstorex(ctxt, int(p.As))), uint32(p.From.Reg), uint32(p.Reg), uint32(r))
+ o1 = AOP_RRR(uint32(opstorex(ctxt, int(p.As))), uint32(p.From.Reg), uint32(p.To.Index), uint32(r))
} else {
if int32(int16(v)) != v {
log.Fatalf("mishandled instruction %v", p)
@@ -1598,11 +1598,11 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
r = int(o.param)
}
v := regoff(ctxt, &p.From)
- if p.From.Type == obj.TYPE_MEM && p.Reg != 0 {
+ if p.From.Type == obj.TYPE_MEM && p.From.Index != 0 {
if v != 0 {
ctxt.Diag("illegal indexed instruction\n%v", p)
}
- o1 = AOP_RRR(uint32(oploadx(ctxt, int(p.As))), uint32(p.To.Reg), uint32(p.Reg), uint32(r))
+ o1 = AOP_RRR(uint32(oploadx(ctxt, int(p.As))), uint32(p.To.Reg), uint32(p.From.Index), uint32(r))
} else {
if int32(int16(v)) != v {
log.Fatalf("mishandled instruction %v", p)
@@ -1617,11 +1617,11 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
r = int(o.param)
}
v := regoff(ctxt, &p.From)
- if p.From.Type == obj.TYPE_MEM && p.Reg != 0 {
+ if p.From.Type == obj.TYPE_MEM && p.From.Index != 0 {
if v != 0 {
ctxt.Diag("illegal indexed instruction\n%v", p)
}
- o1 = AOP_RRR(uint32(oploadx(ctxt, int(p.As))), uint32(p.To.Reg), uint32(p.Reg), uint32(r))
+ o1 = AOP_RRR(uint32(oploadx(ctxt, int(p.As))), uint32(p.To.Reg), uint32(p.From.Index), uint32(r))
} else {
o1 = AOP_IRR(uint32(opload(ctxt, int(p.As))), uint32(p.To.Reg), uint32(r), uint32(v))
}
@@ -1764,16 +1764,12 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
} else {
v = 20 /* unconditional */
}
- r := int(p.Reg)
- if r == 0 {
- r = 0
- }
o1 = AOP_RRR(OP_MTSPR, uint32(p.To.Reg), 0, 0) | (REG_LR&0x1f)<<16 | ((REG_LR>>5)&0x1f)<<11
o2 = OPVCC(19, 16, 0, 0)
if p.As == ABL || p.As == ABCL {
o2 |= 1
}
- o2 = OP_BCR(o2, uint32(v), uint32(r))
+ o2 = OP_BCR(o2, uint32(v), uint32(p.To.Index))
case 18: /* br/bl (lr/ctr); bc/bcl bo,bi,(lr/ctr) */
var v int32
@@ -2085,28 +2081,13 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
o1 = AOP_RRR(uint32(opirr(ctxt, int(p.As))), uint32(p.To.Reg), uint32(p.From.Reg), 0) | (uint32(regoff(ctxt, &p.From3))&0x7F)<<11
case 43: /* unary indexed source: dcbf (b); dcbf (a+b) */
- r := int(p.Reg)
-
- if r == 0 {
- r = 0
- }
- o1 = AOP_RRR(uint32(oprrr(ctxt, int(p.As))), 0, uint32(r), uint32(p.From.Reg))
+ o1 = AOP_RRR(uint32(oprrr(ctxt, int(p.As))), 0, uint32(p.From.Index), uint32(p.From.Reg))
case 44: /* indexed store */
- r := int(p.Reg)
-
- if r == 0 {
- r = 0
- }
- o1 = AOP_RRR(uint32(opstorex(ctxt, int(p.As))), uint32(p.From.Reg), uint32(r), uint32(p.To.Reg))
+ o1 = AOP_RRR(uint32(opstorex(ctxt, int(p.As))), uint32(p.From.Reg), uint32(p.To.Index), uint32(p.To.Reg))
case 45: /* indexed load */
- r := int(p.Reg)
-
- if r == 0 {
- r = 0
- }
- o1 = AOP_RRR(uint32(oploadx(ctxt, int(p.As))), uint32(p.To.Reg), uint32(r), uint32(p.From.Reg))
+ o1 = AOP_RRR(uint32(oploadx(ctxt, int(p.As))), uint32(p.To.Reg), uint32(p.From.Index), uint32(p.From.Reg))
case 46: /* plain op */
o1 = uint32(oprrr(ctxt, int(p.As)))
diff --git a/src/cmd/internal/obj/ppc64/list9.go b/src/cmd/internal/obj/ppc64/list9.go
index 048928442a..4cdcfbcd27 100644
--- a/src/cmd/internal/obj/ppc64/list9.go
+++ b/src/cmd/internal/obj/ppc64/list9.go
@@ -34,85 +34,6 @@ import (
"fmt"
)
-const (
- STRINGSZ = 1000
-)
-
-//
-// Format conversions
-// %A int Opcodes (instruction mnemonics)
-//
-// %D Addr* Addresses (instruction operands)
-//
-// %P Prog* Instructions
-//
-// %R int Registers
-//
-// %$ char* String constant addresses (for internal use only)
-// %^ int C_* classes (for liblink internal use)
-
-var bigP *obj.Prog
-
-func Pconv(p *obj.Prog) string {
- a := int(p.As)
-
- str := ""
- if a == obj.ADATA {
- str = fmt.Sprintf("%.5d (%v)\t%v\t%v/%d,%v",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From), p.From3.Offset, obj.Dconv(p, &p.To))
- } else if a == obj.ATEXT || a == obj.AGLOBL {
- if p.From3.Offset != 0 {
- str = fmt.Sprintf("%.5d (%v)\t%v\t%v,%d,%v",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From), p.From3.Offset, obj.Dconv(p, &p.To))
- } else {
- str = fmt.Sprintf("%.5d (%v)\t%v\t%v,%v",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From), obj.Dconv(p, &p.To))
- }
- } else {
- if p.Mark&NOSCHED != 0 {
- str += fmt.Sprintf("*")
- }
- if p.Reg == 0 && p.From3.Type == obj.TYPE_NONE {
- str += fmt.Sprintf("%.5d (%v)\t%v\t%v,%v",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From), obj.Dconv(p, &p.To))
- } else if a != obj.ATEXT && p.From.Type == obj.TYPE_MEM {
- off := ""
- if p.From.Offset != 0 {
- off = fmt.Sprintf("%d", p.From.Offset)
- }
- str += fmt.Sprintf("%.5d (%v)\t%v\t%s(%v+%v),%v",
- p.Pc, p.Line(), obj.Aconv(a), off, Rconv(int(p.From.Reg)), Rconv(int(p.Reg)), obj.Dconv(p, &p.To))
- } else if p.To.Type == obj.TYPE_MEM {
- off := ""
- if p.From.Offset != 0 {
- off = fmt.Sprintf("%d", p.From.Offset)
- }
- str += fmt.Sprintf("%.5d (%v)\t%v\t%v,%s(%v+%v)",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From), off, Rconv(int(p.To.Reg)), Rconv(int(p.Reg)))
- } else {
- str += fmt.Sprintf("%.5d (%v)\t%v\t%v",
- p.Pc, p.Line(), obj.Aconv(a), obj.Dconv(p, &p.From))
- if p.Reg != 0 {
- str += fmt.Sprintf(",%v", Rconv(int(p.Reg)))
- }
- if p.From3.Type != obj.TYPE_NONE {
- str += fmt.Sprintf(",%v", obj.Dconv(p, &p.From3))
- }
- str += fmt.Sprintf(",%v", obj.Dconv(p, &p.To))
- }
-
- if p.Spadj != 0 {
- var fp string
- fp += fmt.Sprintf("%s # spadj=%d", str, p.Spadj)
- return fp
- }
- }
-
- var fp string
- fp += str
- return fp
-}
-
func init() {
obj.RegisterRegister(obj.RBasePPC64, REG_DCR0+1024, Rconv)
obj.RegisterOpcode(obj.ABasePPC64, Anames)
diff --git a/src/cmd/internal/obj/ppc64/obj9.go b/src/cmd/internal/obj/ppc64/obj9.go
index 75eca37057..027fffa57a 100644
--- a/src/cmd/internal/obj/ppc64/obj9.go
+++ b/src/cmd/internal/obj/ppc64/obj9.go
@@ -949,7 +949,6 @@ loop:
var Linkppc64 = obj.LinkArch{
ByteOrder: binary.BigEndian,
- Pconv: Pconv,
Name: "ppc64",
Thechar: '9',
Preprocess: preprocess,
@@ -963,7 +962,6 @@ var Linkppc64 = obj.LinkArch{
var Linkppc64le = obj.LinkArch{
ByteOrder: binary.LittleEndian,
- Pconv: Pconv,
Name: "ppc64le",
Thechar: '9',
Preprocess: preprocess,
diff --git a/src/cmd/internal/obj/util.go b/src/cmd/internal/obj/util.go
index d626793475..b2c7df7d56 100644
--- a/src/cmd/internal/obj/util.go
+++ b/src/cmd/internal/obj/util.go
@@ -6,6 +6,7 @@ package obj
import (
"bufio"
+ "bytes"
"fmt"
"io"
"log"
@@ -248,11 +249,90 @@ func (p *Prog) Line() string {
return Linklinefmt(p.Ctxt, int(p.Lineno), false, false)
}
+var armCondCode = []string{
+ ".EQ",
+ ".NE",
+ ".CS",
+ ".CC",
+ ".MI",
+ ".PL",
+ ".VS",
+ ".VC",
+ ".HI",
+ ".LS",
+ ".GE",
+ ".LT",
+ ".GT",
+ ".LE",
+ "",
+ ".NV",
+}
+
+/* ARM scond byte */
+const (
+ C_SCOND = (1 << 4) - 1
+ C_SBIT = 1 << 4
+ C_PBIT = 1 << 5
+ C_WBIT = 1 << 6
+ C_FBIT = 1 << 7
+ C_UBIT = 1 << 7
+ C_SCOND_XOR = 14
+)
+
+// CConv formats ARM condition codes.
+func CConv(s uint8) string {
+ if s == 0 {
+ return ""
+ }
+ sc := armCondCode[(s&C_SCOND)^C_SCOND_XOR]
+ if s&C_SBIT != 0 {
+ sc += ".S"
+ }
+ if s&C_PBIT != 0 {
+ sc += ".P"
+ }
+ if s&C_WBIT != 0 {
+ sc += ".W"
+ }
+ if s&C_UBIT != 0 { /* ambiguous with FBIT */
+ sc += ".U"
+ }
+ return sc
+}
+
func (p *Prog) String() string {
if p.Ctxt == nil {
return "<Prog without ctxt>"
}
- return p.Ctxt.Arch.Pconv(p)
+
+ sc := CConv(p.Scond)
+
+ var buf bytes.Buffer
+
+ fmt.Fprintf(&buf, "%.5d (%v)\t%v%s", p.Pc, p.Line(), Aconv(int(p.As)), sc)
+ sep := "\t"
+ if p.From.Type != TYPE_NONE {
+ fmt.Fprintf(&buf, "%s%v", sep, Dconv(p, &p.From))
+ sep = ", "
+ }
+ if p.Reg != REG_NONE {
+ // Should not happen but might as well show it if it does.
+ fmt.Fprintf(&buf, "%s%v", sep, Rconv(int(p.Reg)))
+ sep = ", "
+ }
+ if p.From3.Type != TYPE_NONE {
+ if p.From3.Type == TYPE_CONST && (p.As == ADATA || p.As == ATEXT || p.As == AGLOBL) {
+ // Special case - omit $.
+ fmt.Fprintf(&buf, "%s%d", sep, p.From3.Offset)
+ } else {
+ fmt.Fprintf(&buf, "%s%v", sep, Dconv(p, &p.From3))
+ }
+ sep = ", "
+ }
+ if p.To.Type != TYPE_NONE {
+ fmt.Fprintf(&buf, "%s%v", sep, Dconv(p, &p.To))
+ }
+ return buf.String()
}
func (ctxt *Link) NewProg() *Prog {
diff --git a/src/cmd/internal/obj/x86/list6.go b/src/cmd/internal/obj/x86/list6.go
index 89d6c4a1c3..fc79b902a2 100644
--- a/src/cmd/internal/obj/x86/list6.go
+++ b/src/cmd/internal/obj/x86/list6.go
@@ -31,58 +31,10 @@
package x86
import (
- "bytes"
"cmd/internal/obj"
"fmt"
)
-//
-// Format conversions
-// %A int Opcodes (instruction mnemonics)
-//
-// %D Addr* Addresses (instruction operands)
-//
-// %P Prog* Instructions
-//
-// %R int Registers
-//
-// %$ char* String constant addresses (for internal use only)
-
-const (
- STRINGSZ = 1000
-)
-
-var bigP *obj.Prog
-
-func Pconv(p *obj.Prog) string {
- var buf bytes.Buffer
-
- fmt.Fprintf(&buf, "%.5d (%v)\t%v", p.Pc, p.Line(), obj.Aconv(int(p.As)))
- sep := "\t"
- if p.From.Type != obj.TYPE_NONE {
- fmt.Fprintf(&buf, "%s%v", sep, obj.Dconv(p, &p.From))
- sep = ", "
- }
- if p.Reg != obj.REG_NONE {
- // Should not happen but might as well show it if it does.
- fmt.Fprintf(&buf, "%s%v", sep, obj.Rconv(int(p.Reg)))
- sep = ", "
- }
- if p.From3.Type != obj.TYPE_NONE {
- if p.From3.Type == obj.TYPE_CONST && (p.As == obj.ADATA || p.As == obj.ATEXT || p.As == obj.AGLOBL) {
- // Special case - omit $.
- fmt.Fprintf(&buf, "%s%d", sep, p.From3.Offset)
- } else {
- fmt.Fprintf(&buf, "%s%v", sep, obj.Dconv(p, &p.From3))
- }
- sep = ", "
- }
- if p.To.Type != obj.TYPE_NONE {
- fmt.Fprintf(&buf, "%s%v", sep, obj.Dconv(p, &p.To))
- }
- return buf.String()
-}
-
var Register = []string{
"AL", /* [D_AL] */
"CL",
diff --git a/src/cmd/internal/obj/x86/obj6.go b/src/cmd/internal/obj/x86/obj6.go
index e5bc3584fd..57a201bd9a 100644
--- a/src/cmd/internal/obj/x86/obj6.go
+++ b/src/cmd/internal/obj/x86/obj6.go
@@ -1187,7 +1187,6 @@ var unaryDst = map[int]bool{
var Linkamd64 = obj.LinkArch{
ByteOrder: binary.LittleEndian,
- Pconv: Pconv,
Name: "amd64",
Thechar: '6',
Preprocess: preprocess,
@@ -1202,7 +1201,6 @@ var Linkamd64 = obj.LinkArch{
var Linkamd64p32 = obj.LinkArch{
ByteOrder: binary.LittleEndian,
- Pconv: Pconv,
Name: "amd64p32",
Thechar: '6',
Preprocess: preprocess,
@@ -1217,7 +1215,6 @@ var Linkamd64p32 = obj.LinkArch{
var Link386 = obj.LinkArch{
ByteOrder: binary.LittleEndian,
- Pconv: Pconv,
Name: "386",
Thechar: '8',
Preprocess: preprocess,