]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: convert Peinit to use the loader
authorCherry Zhang <cherryyz@google.com>
Wed, 26 Feb 2020 19:18:35 +0000 (14:18 -0500)
committerCherry Zhang <cherryyz@google.com>
Tue, 3 Mar 2020 15:33:52 +0000 (15:33 +0000)
There is one use of sym.Symbol in Peinit, which is called from
linksetup, which is before loadlibfull. Convert this one.

Change-Id: Iedb8b0e0c5c292bccf5c9bd5d092ee434a4ebdbd
Reviewed-on: https://go-review.googlesource.com/c/go/+/221177
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
src/cmd/link/internal/ld/pe.go

index e20d7da9aabb11aaef2c2545a83067d6a7d9eeff..6f6d5b2e5ac460bf5a243afd18725bdf2c7b2b47 100644 (file)
@@ -978,8 +978,15 @@ func Peinit(ctxt *Link) {
 
        if ctxt.LinkMode == LinkInternal {
                // some mingw libs depend on this symbol, for example, FindPESectionByName
-               ctxt.xdefine("__image_base__", sym.SDATA, PEBASE)
-               ctxt.xdefine("_image_base__", sym.SDATA, PEBASE)
+               for _, name := range [2]string{"__image_base__", "_image_base__"} {
+                       s := ctxt.loader.LookupOrCreateSym(name, 0)
+                       sb := ctxt.loader.MakeSymbolUpdater(s)
+                       sb.SetType(sym.SDATA)
+                       sb.SetValue(PEBASE)
+                       ctxt.loader.SetAttrReachable(s, true)
+                       ctxt.loader.SetAttrSpecial(s, true)
+                       ctxt.loader.SetAttrLocal(s, true)
+               }
        }
 
        HEADR = PEFILEHEADR