mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/link: move ELF reader to its own package
Along the way, switch to using relocation constants from debug/elf. For #22095 Change-Id: I1a64353619f95dde5aa39060c4b9d001af7dc1e4 Reviewed-on: https://go-review.googlesource.com/69013 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
70576947fd
commit
ecfa7375e4
13 changed files with 347 additions and 767 deletions
|
|
@ -35,6 +35,7 @@ import (
|
|||
"cmd/internal/sys"
|
||||
"cmd/link/internal/ld"
|
||||
"cmd/link/internal/sym"
|
||||
"debug/elf"
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
|
@ -59,15 +60,15 @@ func elfreloc1(ctxt *ld.Link, r *sym.Reloc, sectoff int64) bool {
|
|||
if r.Siz != 4 {
|
||||
return false
|
||||
}
|
||||
ctxt.Out.Write32(ld.R_MIPS_32 | uint32(elfsym)<<8)
|
||||
ctxt.Out.Write32(uint32(elf.R_MIPS_32) | uint32(elfsym)<<8)
|
||||
case objabi.R_ADDRMIPS:
|
||||
ctxt.Out.Write32(ld.R_MIPS_LO16 | uint32(elfsym)<<8)
|
||||
ctxt.Out.Write32(uint32(elf.R_MIPS_LO16) | uint32(elfsym)<<8)
|
||||
case objabi.R_ADDRMIPSU:
|
||||
ctxt.Out.Write32(ld.R_MIPS_HI16 | uint32(elfsym)<<8)
|
||||
ctxt.Out.Write32(uint32(elf.R_MIPS_HI16) | uint32(elfsym)<<8)
|
||||
case objabi.R_ADDRMIPSTLS:
|
||||
ctxt.Out.Write32(ld.R_MIPS_TLS_TPREL_LO16 | uint32(elfsym)<<8)
|
||||
ctxt.Out.Write32(uint32(elf.R_MIPS_TLS_TPREL_LO16) | uint32(elfsym)<<8)
|
||||
case objabi.R_CALLMIPS, objabi.R_JMPMIPS:
|
||||
ctxt.Out.Write32(ld.R_MIPS_26 | uint32(elfsym)<<8)
|
||||
ctxt.Out.Write32(uint32(elf.R_MIPS_26) | uint32(elfsym)<<8)
|
||||
}
|
||||
|
||||
return true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue