mirror of https://github.com/golang/go.git
cmd/nm, cmd/objdump: fix elf symbol types
Turns out elf.File.Sections is indexed by the actual section number, not the number minus one. I don't know why I thought the -1 was necessary. Fixes objdump test (and therefore build) on ELF systems. While we're here, fix bounds on gnuDump so that we don't crash when asked to disassemble outside the text segment. May fix Windows build or at least make the failure more interesting. TBR=iant CC=golang-codereviews https://golang.org/cl/92390043
This commit is contained in:
parent
bf1d400d1c
commit
8e22903b46
|
|
@ -34,10 +34,10 @@ func elfSymbols(f *os.File) []Sym {
|
|||
sym.Code = 'B'
|
||||
default:
|
||||
i := int(s.Section)
|
||||
if i <= 0 || i > len(p.Sections) {
|
||||
if i < 0 || i >= len(p.Sections) {
|
||||
break
|
||||
}
|
||||
sect := p.Sections[i-1]
|
||||
sect := p.Sections[i]
|
||||
switch sect.Flags & (elf.SHF_WRITE | elf.SHF_ALLOC | elf.SHF_EXECINSTR) {
|
||||
case elf.SHF_ALLOC | elf.SHF_EXECINSTR:
|
||||
sym.Code = 'T'
|
||||
|
|
|
|||
|
|
@ -42,10 +42,10 @@ func elfSymbols(f *os.File) (syms []Sym, goarch string) {
|
|||
sym.Code = 'B'
|
||||
default:
|
||||
i := int(s.Section)
|
||||
if i <= 0 || i > len(p.Sections) {
|
||||
if i < 0 || i >= len(p.Sections) {
|
||||
break
|
||||
}
|
||||
sect := p.Sections[i-1]
|
||||
sect := p.Sections[i]
|
||||
switch sect.Flags & (elf.SHF_WRITE | elf.SHF_ALLOC | elf.SHF_EXECINSTR) {
|
||||
case elf.SHF_ALLOC | elf.SHF_EXECINSTR:
|
||||
sym.Code = 'T'
|
||||
|
|
|
|||
|
|
@ -235,6 +235,15 @@ func gnuDump(tab *gosym.Table, lookup lookupFunc, disasm disasmFunc, textData []
|
|||
if err != nil {
|
||||
log.Fatalf("invalid end PC: %v", err)
|
||||
}
|
||||
if start < textStart {
|
||||
start = textStart
|
||||
}
|
||||
if end < start {
|
||||
end = start
|
||||
}
|
||||
if end > textStart+uint64(len(textData)) {
|
||||
end = textStart + uint64(len(textData))
|
||||
}
|
||||
|
||||
stdout := bufio.NewWriter(os.Stdout)
|
||||
defer stdout.Flush()
|
||||
|
|
|
|||
Loading…
Reference in New Issue