mirror of
https://github.com/golang/go
synced 2024-11-23 01:50:04 -07:00
cmd/ld: don't add line number info for the final address of an FDE
This makes dwardump --verify happy. Update #8846 LGTM=r R=golang-codereviews, r CC=golang-codereviews https://golang.org/cl/150370043
This commit is contained in:
parent
14cd40d912
commit
060b24006a
@ -1733,6 +1733,7 @@ writeframes(void)
|
||||
LSym *s;
|
||||
vlong fdeo, fdesize, pad;
|
||||
Pciter pcsp;
|
||||
uint32 nextpc;
|
||||
|
||||
if(framesec == S)
|
||||
framesec = linklookup(ctxt, ".dwarfframe", 0);
|
||||
@ -1775,8 +1776,17 @@ writeframes(void)
|
||||
addrput(0); // initial location
|
||||
addrput(0); // address range
|
||||
|
||||
for(pciterinit(ctxt, &pcsp, &s->pcln->pcsp); !pcsp.done; pciternext(&pcsp))
|
||||
putpccfadelta(pcsp.nextpc - pcsp.pc, PtrSize + pcsp.value);
|
||||
for(pciterinit(ctxt, &pcsp, &s->pcln->pcsp); !pcsp.done; pciternext(&pcsp)) {
|
||||
nextpc = pcsp.nextpc;
|
||||
// pciterinit goes up to the end of the function,
|
||||
// but DWARF expects us to stop just before the end.
|
||||
if(nextpc == s->size) {
|
||||
nextpc--;
|
||||
if(nextpc < pcsp.pc)
|
||||
continue;
|
||||
}
|
||||
putpccfadelta(nextpc - pcsp.pc, PtrSize + pcsp.value);
|
||||
}
|
||||
|
||||
fdesize = cpos() - fdeo - 4; // exclude the length field.
|
||||
pad = rnd(fdesize, PtrSize) - fdesize;
|
||||
|
Loading…
Reference in New Issue
Block a user