diff options
| author | Than McIntosh <thanm@google.com> | 2020-03-24 09:23:09 -0400 |
|---|---|---|
| committer | Than McIntosh <thanm@google.com> | 2020-03-28 23:59:16 +0000 |
| commit | 912e64ba46eb3d130d2fb3ccaa7e7f4ac4d38991 (patch) | |
| tree | e3e6054a4ef02daf7aec77af72d0db4f83a424cd /src/cmd | |
| parent | a9fb2e5155041615df59b5e3db9b546e723d0ff1 (diff) | |
| download | go-912e64ba46eb3d130d2fb3ccaa7e7f4ac4d38991.tar.xz | |
[dev.link] cmd/link/internal/loader: add Loader plt/got access methods
Add accessor methods to get at the symbol {plt,got} value for
PE symbols. Fix a bug in the loaders SetPlt/SetGot methods.
Change-Id: I975bd6b86122622b206487c8798f8290ecd25a57
Reviewed-on: https://go-review.googlesource.com/c/go/+/225199
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd')
| -rw-r--r-- | src/cmd/link/internal/loader/loader.go | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index e342fbe680..3b77a4bff3 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -1133,24 +1133,40 @@ func (l *Loader) SetSymElfType(i Sym, et elf.SymType) { } } +// SymPlt returns the plt value for pe symbols. +func (l *Loader) SymPlt(s Sym) int32 { + if v, ok := l.plt[s]; ok { + return v + } + return -1 +} + // SetPlt sets the plt value for pe symbols. func (l *Loader) SetPlt(i Sym, v int32) { if i >= Sym(len(l.objSyms)) || i == 0 { panic("bad symbol for SetPlt") } - if v == 0 { + if v == -1 { delete(l.plt, i) } else { l.plt[i] = v } } +// SymGot returns the got value for pe symbols. +func (l *Loader) SymGot(s Sym) int32 { + if v, ok := l.got[s]; ok { + return v + } + return -1 +} + // SetGot sets the got value for pe symbols. func (l *Loader) SetGot(i Sym, v int32) { if i >= Sym(len(l.objSyms)) || i == 0 { panic("bad symbol for SetGot") } - if v == 0 { + if v == -1 { delete(l.got, i) } else { l.got[i] = v @@ -1257,11 +1273,11 @@ func (l *Loader) SymLocalentry(i Sym) uint8 { return l.localentry[i] } -// SetSymExtname sets the "extname" attribute for a symbol. +// SetSymLocalentry sets the "local entry" attribute for a symbol. func (l *Loader) SetSymLocalentry(i Sym, value uint8) { // reject bad symbols if i >= Sym(len(l.objSyms)) || i == 0 { - panic("bad symbol index in SetExtname") + panic("bad symbol index in SetSymLocalentry") } if value == 0 { delete(l.localentry, i) |
