Skip to content

Commit 516c6b4

Browse files
skohanimcrawshaw
authored andcommitted
cmd/link: Clean up Pcln struct
Removes unnecessary fields from Pcln. Change-Id: I175049ca749b510eedaf65162355bc4d7a93315e Reviewed-on: https://go-review.googlesource.com/21041 Reviewed-by: David Crawshaw <[email protected]>
1 parent 53efe1e commit 516c6b4

5 files changed

Lines changed: 11 additions & 18 deletions

File tree

src/cmd/link/internal/ld/deadcode.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ func (d *deadcodepass) flood() {
344344
}
345345

346346
if s.Pcln != nil {
347-
for i := 0; i < s.Pcln.Nfuncdata; i++ {
347+
for i := range s.Pcln.Funcdata {
348348
d.mark(s.Pcln.Funcdata[i], s)
349349
}
350350
}

src/cmd/link/internal/ld/dwarf.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1367,7 +1367,7 @@ func finddebugruntimepath(s *LSym) {
13671367
return
13681368
}
13691369

1370-
for i := 0; i < s.Pcln.Nfile; i++ {
1370+
for i := range s.Pcln.File {
13711371
f := s.Pcln.File[i]
13721372
if i := strings.Index(f.Name, "runtime/runtime.go"); i >= 0 {
13731373
gdbscript = f.Name[:i] + "runtime/runtime-gdb.py"

src/cmd/link/internal/ld/link.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,13 +235,9 @@ type Pcln struct {
235235
Pcfile Pcdata
236236
Pcline Pcdata
237237
Pcdata []Pcdata
238-
Npcdata int
239238
Funcdata []*LSym
240239
Funcdataoff []int64
241-
Nfuncdata int
242240
File []*LSym
243-
Nfile int
244-
Mfile int
245241
Lastfile *LSym
246242
Lastindex int
247243
}

src/cmd/link/internal/ld/objfile.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,14 +282,12 @@ overwrite:
282282
pc.Pcline.P = rddata(f, buf)
283283
n = rdint(f)
284284
pc.Pcdata = make([]Pcdata, n)
285-
pc.Npcdata = n
286285
for i := 0; i < n; i++ {
287286
pc.Pcdata[i].P = rddata(f, buf)
288287
}
289288
n = rdint(f)
290289
pc.Funcdata = make([]*LSym, n)
291290
pc.Funcdataoff = make([]int64, n)
292-
pc.Nfuncdata = n
293291
for i := 0; i < n; i++ {
294292
pc.Funcdata[i] = rdsym(ctxt, f, pkg)
295293
}
@@ -298,7 +296,6 @@ overwrite:
298296
}
299297
n = rdint(f)
300298
pc.File = make([]*LSym, n)
301-
pc.Nfile = n
302299
for i := 0; i < n; i++ {
303300
pc.File[i] = rdsym(ctxt, f, pkg)
304301
}

src/cmd/link/internal/ld/pcln.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)