@@ -280,8 +280,8 @@ func pclntab() {
280280 // fixed size of struct, checked below
281281 off = funcstart
282282
283- end = funcstart + int32 (Thearch .Ptrsize ) + 3 * 4 + 5 * 4 + int32 (pcln .Npcdata ) * 4 + int32 (pcln .Nfuncdata )* int32 (Thearch .Ptrsize )
284- if pcln .Nfuncdata > 0 && (end & int32 (Thearch .Ptrsize - 1 ) != 0 ) {
283+ end = funcstart + int32 (Thearch .Ptrsize ) + 3 * 4 + 5 * 4 + int32 (len ( pcln .Pcdata )) * 4 + int32 (len ( pcln .Funcdata ) )* int32 (Thearch .Ptrsize )
284+ if len ( pcln .Funcdata ) > 0 && (end & int32 (Thearch .Ptrsize - 1 ) != 0 ) {
285285 end += 4
286286 }
287287 Symgrow (Ctxt , ftab , int64 (end ))
@@ -321,19 +321,19 @@ func pclntab() {
321321
322322 off = addpctab (ftab , off , & pcln .Pcfile )
323323 off = addpctab (ftab , off , & pcln .Pcline )
324- off = int32 (setuint32 (Ctxt , ftab , int64 (off ), uint32 (pcln .Npcdata )))
325- off = int32 (setuint32 (Ctxt , ftab , int64 (off ), uint32 (pcln .Nfuncdata )))
326- for i = 0 ; i < int32 (pcln .Npcdata ); i ++ {
324+ off = int32 (setuint32 (Ctxt , ftab , int64 (off ), uint32 (len ( pcln .Pcdata ) )))
325+ off = int32 (setuint32 (Ctxt , ftab , int64 (off ), uint32 (len ( pcln .Funcdata ) )))
326+ for i = 0 ; i < int32 (len ( pcln .Pcdata ) ); i ++ {
327327 off = addpctab (ftab , off , & pcln .Pcdata [i ])
328328 }
329329
330330 // funcdata, must be pointer-aligned and we're only int32-aligned.
331331 // Missing funcdata will be 0 (nil pointer).
332- if pcln .Nfuncdata > 0 {
332+ if len ( pcln .Funcdata ) > 0 {
333333 if off & int32 (Thearch .Ptrsize - 1 ) != 0 {
334334 off += 4
335335 }
336- for i = 0 ; i < int32 (pcln .Nfuncdata ); i ++ {
336+ for i = 0 ; i < int32 (len ( pcln .Funcdata ) ); i ++ {
337337 if pcln .Funcdata [i ] == nil {
338338 setuintxx (Ctxt , ftab , int64 (off )+ int64 (Thearch .Ptrsize )* int64 (i ), uint64 (pcln .Funcdataoff [i ]), int64 (Thearch .Ptrsize ))
339339 } else {
@@ -344,11 +344,11 @@ func pclntab() {
344344 }
345345 }
346346
347- off += int32 (pcln .Nfuncdata ) * int32 (Thearch .Ptrsize )
347+ off += int32 (len ( pcln .Funcdata ) ) * int32 (Thearch .Ptrsize )
348348 }
349349
350350 if off != end {
351- Diag ("bad math in functab: funcstart=%d off=%d but end=%d (npcdata=%d nfuncdata=%d ptrsize=%d)" , funcstart , off , end , pcln .Npcdata , pcln .Nfuncdata , Thearch .Ptrsize )
351+ Diag ("bad math in functab: funcstart=%d off=%d but end=%d (npcdata=%d nfuncdata=%d ptrsize=%d)" , funcstart , off , end , len ( pcln .Pcdata ), len ( pcln .Funcdata ) , Thearch .Ptrsize )
352352 errorexit ()
353353 }
354354
0 commit comments