]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link/internal/ld: change pe64 from int to bool
authorqmuntal <quimmuntal@gmail.com>
Wed, 19 Mar 2025 08:57:36 +0000 (09:57 +0100)
committerQuim Muntal <quimmuntal@gmail.com>
Fri, 21 Mar 2025 21:24:52 +0000 (14:24 -0700)
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>
src/cmd/link/internal/ld/pe.go

index 920ee7b573eac7736f0be103530eb7fc3936cef6..2808644150c24294b2aae5725f4901c29e30a980 100644 (file)
@@ -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)