]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/internal/obj/objfile.go
all: implement wasmimport directive
[gostls13.git] / src / cmd / internal / obj / objfile.go
index 73c29d9686590b57237c9e1beb8fae074c89d47b..78fa4c1076e1b4becb53fe8afe01a536bf590063 100644 (file)
@@ -605,7 +605,12 @@ func (w *writer) Aux(s *LSym) {
                for _, pcSym := range fn.Pcln.Pcdata {
                        w.aux1(goobj.AuxPcdata, pcSym)
                }
-
+               if fn.WasmImportSym != nil {
+                       if fn.WasmImportSym.Size == 0 {
+                               panic("wasmimport aux sym must have non-zero size")
+                       }
+                       w.aux1(goobj.AuxWasmImport, fn.WasmImportSym)
+               }
        }
 }
 
@@ -703,6 +708,12 @@ func nAuxSym(s *LSym) int {
                        n++
                }
                n += len(fn.Pcln.Pcdata)
+               if fn.WasmImport != nil {
+                       if fn.WasmImportSym == nil || fn.WasmImportSym.Size == 0 {
+                               panic("wasmimport aux sym must exist and have non-zero size")
+                       }
+                       n++
+               }
        }
        return n
 }
@@ -759,8 +770,8 @@ func genFuncInfoSyms(ctxt *Link) {
                fn.FuncInfoSym = isym
                b.Reset()
 
-               dwsyms := []*LSym{fn.dwarfRangesSym, fn.dwarfLocSym, fn.dwarfDebugLinesSym, fn.dwarfInfoSym}
-               for _, s := range dwsyms {
+               auxsyms := []*LSym{fn.dwarfRangesSym, fn.dwarfLocSym, fn.dwarfDebugLinesSym, fn.dwarfInfoSym, fn.WasmImportSym}
+               for _, s := range auxsyms {
                        if s == nil || s.Size == 0 {
                                continue
                        }