File tree 1 file changed +5
-2
lines changed
src/cmd/link/internal/arm64 1 file changed +5
-2
lines changed Original file line number Diff line number Diff line change @@ -46,7 +46,7 @@ func gentext(ctxt *ld.Link) {
46
46
return
47
47
}
48
48
addmoduledata := ctxt .Syms .Lookup ("runtime.addmoduledata" , 0 )
49
- if addmoduledata .Type == sym .STEXT {
49
+ if addmoduledata .Type == sym .STEXT && ctxt . BuildMode != ld . BuildModePlugin {
50
50
// we're linking a module containing the runtime -> no need for
51
51
// an init function
52
52
return
@@ -72,7 +72,7 @@ func gentext(ctxt *ld.Link) {
72
72
rel .Sym = ctxt .Moduledata
73
73
rel .Type = objabi .R_ADDRARM64
74
74
75
- // 8: 14000000 bl 0 <runtime.addmoduledata>
75
+ // 8: 14000000 b 0 <runtime.addmoduledata>
76
76
// 8: R_AARCH64_CALL26 runtime.addmoduledata
77
77
o (0x14000000 )
78
78
rel = initfunc .AddRel ()
@@ -81,6 +81,9 @@ func gentext(ctxt *ld.Link) {
81
81
rel .Sym = ctxt .Syms .Lookup ("runtime.addmoduledata" , 0 )
82
82
rel .Type = objabi .R_CALLARM64 // Really should be R_AARCH64_JUMP26 but doesn't seem to make any difference
83
83
84
+ if ctxt .BuildMode == ld .BuildModePlugin {
85
+ ctxt .Textp = append (ctxt .Textp , addmoduledata )
86
+ }
84
87
ctxt .Textp = append (ctxt .Textp , initfunc )
85
88
initarray_entry := ctxt .Syms .Lookup ("go.link.addmoduledatainit" , 0 )
86
89
initarray_entry .Attr |= sym .AttrReachable
You can’t perform that action at this time.
0 commit comments