mirror of
https://github.com/golang/go.git
synced 2025-10-19 11:03:18 +00:00
cmd/link/internal/ld: change pe64 from int to bool
pe64 should be a bool, not a int. Probable a leftover from the previous C implementation. While here, us pe64 in more places. Change-Id: Ie9871b39b64a7b9d317cb0700cb77a19ee23838d Reviewed-on: https://go-review.googlesource.com/c/go/+/659115 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
3108366214
commit
ba01453bbe
1 changed files with 17 additions and 21 deletions
|
@ -306,7 +306,7 @@ var (
|
|||
rsrcsyms []loader.Sym
|
||||
PESECTHEADR int32
|
||||
PEFILEHEADR int32
|
||||
pe64 int
|
||||
pe64 bool
|
||||
dr *Dll
|
||||
|
||||
dexport []loader.Sym
|
||||
|
@ -541,15 +541,12 @@ func (f *peFile) addInitArray(ctxt *Link) *peSection {
|
|||
// that this will need to grow in the future.
|
||||
var size int
|
||||
var alignment uint32
|
||||
switch buildcfg.GOARCH {
|
||||
default:
|
||||
Exitf("peFile.addInitArray: unsupported GOARCH=%q\n", buildcfg.GOARCH)
|
||||
case "386", "arm":
|
||||
size = 4
|
||||
alignment = IMAGE_SCN_ALIGN_4BYTES
|
||||
case "amd64", "arm64":
|
||||
if pe64 {
|
||||
size = 8
|
||||
alignment = IMAGE_SCN_ALIGN_8BYTES
|
||||
} else {
|
||||
size = 4
|
||||
alignment = IMAGE_SCN_ALIGN_4BYTES
|
||||
}
|
||||
sect := f.addSection(".ctors", size, size)
|
||||
sect.characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | alignment
|
||||
|
@ -559,11 +556,10 @@ func (f *peFile) addInitArray(ctxt *Link) *peSection {
|
|||
|
||||
init_entry := ctxt.loader.Lookup(*flagEntrySymbol, 0)
|
||||
addr := uint64(ctxt.loader.SymValue(init_entry)) - ctxt.loader.SymSect(init_entry).Vaddr
|
||||
switch buildcfg.GOARCH {
|
||||
case "386", "arm":
|
||||
ctxt.Out.Write32(uint32(addr))
|
||||
case "amd64", "arm64":
|
||||
if pe64 {
|
||||
ctxt.Out.Write64(addr)
|
||||
} else {
|
||||
ctxt.Out.Write32(uint32(addr))
|
||||
}
|
||||
return sect
|
||||
}
|
||||
|
@ -938,7 +934,7 @@ func (f *peFile) writeFileHeader(ctxt *Link) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
var oh64 pe.OptionalHeader64
|
||||
fh.SizeOfOptionalHeader = uint16(binary.Size(&oh64))
|
||||
fh.Characteristics |= pe.IMAGE_FILE_LARGE_ADDRESS_AWARE
|
||||
|
@ -959,7 +955,7 @@ func (f *peFile) writeOptionalHeader(ctxt *Link) {
|
|||
var oh pe.OptionalHeader32
|
||||
var oh64 pe.OptionalHeader64
|
||||
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
oh64.Magic = 0x20b // PE32+
|
||||
} else {
|
||||
oh.Magic = 0x10b // PE32
|
||||
|
@ -1080,13 +1076,13 @@ func (f *peFile) writeOptionalHeader(ctxt *Link) {
|
|||
oh64.NumberOfRvaAndSizes = 16
|
||||
oh.NumberOfRvaAndSizes = 16
|
||||
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
oh64.DataDirectory = f.dataDirectory
|
||||
} else {
|
||||
oh.DataDirectory = f.dataDirectory
|
||||
}
|
||||
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
binary.Write(ctxt.Out, binary.LittleEndian, &oh64)
|
||||
} else {
|
||||
binary.Write(ctxt.Out, binary.LittleEndian, &oh)
|
||||
|
@ -1100,7 +1096,7 @@ func Peinit(ctxt *Link) {
|
|||
|
||||
if ctxt.Arch.PtrSize == 8 {
|
||||
// 64-bit architectures
|
||||
pe64 = 1
|
||||
pe64 = true
|
||||
PEBASE = 1 << 32
|
||||
if ctxt.Arch.Family == sys.AMD64 {
|
||||
// TODO(rsc): For cgo we currently use 32-bit relocations
|
||||
|
@ -1316,14 +1312,14 @@ func addimports(ctxt *Link, datsect *peSection) {
|
|||
for d := dr; d != nil; d = d.next {
|
||||
d.thunkoff = uint64(ctxt.Out.Offset()) - n
|
||||
for m := d.ms; m != nil; m = m.next {
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
ctxt.Out.Write64(m.off)
|
||||
} else {
|
||||
ctxt.Out.Write32(uint32(m.off))
|
||||
}
|
||||
}
|
||||
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
ctxt.Out.Write64(0)
|
||||
} else {
|
||||
ctxt.Out.Write32(0)
|
||||
|
@ -1345,14 +1341,14 @@ func addimports(ctxt *Link, datsect *peSection) {
|
|||
ctxt.Out.SeekSet(int64(uint64(datsect.pointerToRawData) + ftbase))
|
||||
for d := dr; d != nil; d = d.next {
|
||||
for m := d.ms; m != nil; m = m.next {
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
ctxt.Out.Write64(m.off)
|
||||
} else {
|
||||
ctxt.Out.Write32(uint32(m.off))
|
||||
}
|
||||
}
|
||||
|
||||
if pe64 != 0 {
|
||||
if pe64 {
|
||||
ctxt.Out.Write64(0)
|
||||
} else {
|
||||
ctxt.Out.Write32(0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue