diff options
| author | qmuntal <quimmuntal@gmail.com> | 2025-03-19 09:57:36 +0100 |
|---|---|---|
| committer | Quim Muntal <quimmuntal@gmail.com> | 2025-03-21 14:24:52 -0700 |
| commit | ba01453bbed831f143d3005abc85fd6baec36da5 (patch) | |
| tree | 8ec830eb47796b4b9d9146aa7c61aa3e14e44929 /src/cmd/link/internal | |
| parent | 3108366214bb1fc15b0f261ba27f448e3bd0e685 (diff) | |
| download | go-ba01453bbed831f143d3005abc85fd6baec36da5.tar.xz | |
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>
Diffstat (limited to 'src/cmd/link/internal')
| -rw-r--r-- | src/cmd/link/internal/ld/pe.go | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/src/cmd/link/internal/ld/pe.go b/src/cmd/link/internal/ld/pe.go index 920ee7b573..2808644150 100644 --- a/src/cmd/link/internal/ld/pe.go +++ b/src/cmd/link/internal/ld/pe.go @@ -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) |
